I am going to develop an USB host application with low cost WiFi USB dongle on FRDM-KL25Z. The WiFi dongle is much cheaper than industrial WiFi modules.
I am not sure if anyone has similar experiences before. WiFi dongle used to be very tough to develop since most of them have proprietary firmware and other issues.
Is there any embedded system friendly WiFi dongle?
I do find RL3070 from Ralink, it seems popular in hackable WiFi equipment.
Any comments are welcome.
Solved! Go to Solution.
After researching internet for latest open source development board. I found following information to share with community members.
AR9331, WiFi router SoC, used by Arduino Yun
Atheros Silicon based embedded UART/WiFi module, used by DigiX
Ralink RT5350F WiFi router SoC, used by Uruk
TI/Murata C3000 WiFi module, used by SparkCore
Ralink RL3070 USB dongle
Atheros AR9271 USB dongle
Realtek RTL8818 USB dongle
Atheros AR6102 SDIO module
Most of the embedded WiFi module uses UART/SPI bus, the USB dongles are suitable for KL25Z USB OTG, but only works in USB F/S, but USB dongles are cheaper than embedded versions.
The datasheets for above parts are not fully available from vendors' web site. So it takes time to dig.
Found some Broadcom chips that work on SPI and apparently are used in Apple EyePhones (typo intended).
Google BCM4325, BCM4329.
Since this topic pulls me back over and over. I could like to update some information for your information.
USB dongle for KL/K, so far I haven't kicked it off yet. However I do find some alternative solutions locally, not via USB host, but via SPI/SDIO port.
WM-G-MR-09 (Marvell 88W8686) Embedded Wifi module, around CNY25, (=4USD). There are some bare metal solutions based upon STM32F4XX/5XX. All features have been implemented, including firmware download, TCP/IP stack, web server and WPA. The dev kit is about USB60.
Since it uses STM32F4XX, if we decide to port this solution. KL25/K20 is can not be used, K60/K70 is suitable.
You can check WHZ7188 WiFi module.
WhizNets is not very forthcoming about price... best I can tell from press releases those modules are $49.99 - way too expensive. You can get wifi dongles for $5-6 in 1's, less than $3 in 1K qty. If WhizNet meets those prices, I'd call it low cost, as the OP was interested in.
Hi Marc,
I am not sure about the current price but i think it must be competative. Why don't you check with them once?
considering you raised the part number, i'd expect you would investigate.
Some suppliers don't offer 'public' part pricing. They want to control all aspects of 'information flow' to potential adoptees.
I have just begun an attempt to use a RAlink Technology usb wifi device with the imx53 qsb.
There does not seem to be an easy way to do this.
To the embedded linux device driver experts out there I have 2 questions:
1. Am I correct that getting a Ralink wifi device working correctly with the qsb is hard? Or did I miss something obvious?
2. Is it possible?
It should work.
1. Have you built the kernel module for your ralink chipset?
2. Do you have the firmware *.bin file on your target?
If the above two are there, then look at "dmesg | tail" when you insert your usb dongle and please reply what you see
After some hours of effort I got it working.
To get the wifi dongle working I compiled a new kernel using these instructions:
i.MX53 Quick Start - Linux on ARM - eewiki
Then the dongle worked as soon as I plugged it in.
A better solution is to switch to the beaglebone black. Their community is larger and more responsive. The default kernel and build system is not ancient. Questions on their forum actually get answered.
Notice how useful this particular thread was - NOT!.
I had zero problems getting a $5 USB dongle working in adhoc and infrastructure mode with the beaglebone black.
Robert Nelson's kernel build instructions are excellent and one of the best things to happen to the embedded ARM community.
I am trying to support WiFi USB dongle on bare metal MCU, rather than hosted MPU. Thanks for your info anyway, I am trying to buy a BBB.
Hi,
Just wanted to thank you for the info, but I'm not in a position to spend enough time on it to accomplish what I wanted. Kai Liu, your research made me understand better how difficult the project would be. I'm impressed.
Just small suggestion: It is probably not desirable/feasible to attempt higher than UDP level in a stack without more memory and performance than a low-end Kinetis, but that's not a bad thing. A ton of apps would benefit from just cheap slow UDP connectivity. Good luck! I think it would be a very valuable solution.
Roger
Here is a link to an application note that describes how to get WiFi connectivity on the Kinetis K70/K61 using a USB "dongle". This is a 150MHz Kinetis device running uClinux:
Where you successful in getting the wifi module working?
If yes can you share details of your work?
If no what hardware are you working with? I will purchase the same hardware and work on the problem with you.
Just found this list of wifi products along with the associated drivers and chipsets, seems useful.
Hi, Ramon,
At this moment, I am just do some background research to evaluate its effort to build a baremetal WiFi via USB host/OTG port. It seems many work to support USB dongle on a baremetal board than uCLinux. I haven't kick off the project yet.
I am developing a new KL25Z based board, which leverages its USB OTG port to support ADB (to Android).
If it can support WiFi+TCP/IP socket, and Bluetooth dongle. The board can be more popular. That is the motivate of my intention to develop a baremetal solution to USB WiFi dongle.
The list is useful, but most of the parts are not available any more. Currently I am considering
All sources come from taobao.com (alibaba.com for international buyer).
Update:
Today I got two local brand WiFi dongles. Netcore NW336 (RTL8188CUS) and B-Link BL-LW05-A(RL3070). They are all B/G/N for 150Mbps.
Because I can only find out RTL8187L datasheet (with register and USB description) so far, and Realtek is recommended by Wikipedia for its GPL and without 3rd party firmware. I decided to start with RTL8188CUS.
It may need a lot of resources for RAM/ROM to support USB dongle driver and TCP/IP stack. I will port USB dongle only to support uIP stack.
Is there an update on a bare metal Realtek Wifi driver effort?
Hi, Roger,
I have not spent too much time on it, because I am working on RSA authentication for my Android peripheral board.
Actually I got two WiFi dongles from retail market, one is RT3070 based, one is RTL8188TVS based. They are popular in embedded work for WiFi hacking and STB/Smart TV. The enclosed CD-ROM of these dongles have Linux driver source code.
However, when I connect them to Ubuntu 12.04 LTS. I found RT3070 is much friendly.
I would like propose it as an open source project, since it may require more time than my plan.
Yours sincerely
Allan K Liu
very interested in your progress! Obviously the Freedom is too small to run uClinux. So then how to port?
You mentioned uIP but I hope you mean lwIP, the newer version? lwIP Wiki
Or maybe the answer is to try to compile the ralink driver with something POSIX compliant?
There's a POSIX shim for FreeRTOS here: Freertos posix Development - Open Circuits
And FreeRTOS itself is pretty tiny and you can find a PE component for it followling links from www.mcueclipse.org
Hope it gives you some interesting stuff to investigate!
I have a RTL8192CU USB dongle and am using yocto (3.0.35_1.1.0 kernel). I was able to rebuild kernel with the drivers and they load fine:
rtl8192cu: MAC address: 08:86:3b:a3:93:6a
rtl8192cu: Board Type 0
rtl8192cu: rx_max_size 15360, rx_urb_num 8, in_ep 1
ieee80211 phy3: Selected rate control algorithm 'rtl_rc'
usbcore: registered new interface driver rtl8192cu
But rfkill keeps the wlan interface Soft-Blocked even after I execute 'rfkill unblock all':
root@imx6qsabrelite:~# rfkill unblock all
root@imx6qsabrelite:~# rfkill list
3: phy3: wlan
Soft blocked: yes
Hard blocked: no
I've also tried this with a Ralink RT2571W dongle (rt2x00usb kernel driver module) and same result. So there could be a problem with the rfkill driver in the kernel. Have you come across this problem?
Thanks