A project researching the capabilities and use of the newly available ESP8266 low-cost WiFi module.
This project was created on 08/27/2014 and last updated 2 months ago.
So my chips finally passed through customs and arrived in sealed anti-static bags. I connected up the VDD and GND to a bench power supply as others have noted that these chips need quite a bit of power. I also needed to connect the CH_PD pin to 3.3V to enable the chip. Just on standby, the chip consumes about 70mA.
I connected the TX and RX lines to my Sparkfun FTDI Basic and fired up Putty just to test out some commands before I hook it up to a chipKIT. I have to talk to the chip over 115200 Baud, and 57600 does not work. I received READY in my Putty terminal and sent AT+RST. The chip spit out a bunch of boot up text which I will include later when I write a post showing the response of all of the commands. I sent AT+CWLAP and nothing... at first I received ERROR. I sent it a couple more times and actually got the chip to list the access points! I tried connecting to my wifi router, but I entered the password wrong and still received OK. I tried sending the inquiry if I was connected and the chip hung up and any command I sent after that said it was busy. All further attempts to send AT+CWLAP hang up the chip.
So I would say so far, the chip isn't as easy to use out of the box as others have stated. I will investigate further and send some more commands and write up a post detailing how the chip responds.
I am still awaiting the arrival of the modules I ordered from AliExpress. I have a tracking number, but it doesn't seem valid yet. It is great reading up on the progress others who have received their modules are making! Peter has been active in the comments and has successfully sent TCP data.
I will provide another update when I receive the modules and being work on the library. I was originally going to write the library for the MSP430 microcontrollers, but it looks like many people who have received their modules are using the Arduino. I might create the library for the Arduino first so that I can get the most amount of people debugging the library. I will eventually port the library to both platforms.
So looking around on this German forum post about the ESP8266
I saw that somebody translated the Chinese AT command pdf (into German which google than translated into English for me). The translation this person posted had much more information about the chip than I had seen before! I had assumed that the Nurdspace page everybody is probably already very familiar with
was translated from the same document and was all the information we had so I didn't bother taking a look at the actual document in Chinese. It seemed like it would be just BARELY enough to get a good library going, however a lot of information was missing like possible return values and the returned data format. It wouldn't have been impossible to figure this stuff out after getting the chip, but it would have taken longer just poking around.
Read on to see the translated document and what to expect from the List Access Points Command.Read more »
BPI-R1 smart router-designed for your samrt home
Finally got these little gems working...
I'm not using level shift circuitry and although the specks suggest the chip is not 5 volts tolerant, the two I tested (over many hours) are still working. I did try using resistors to create a simple level shifter but that didn't work and cost me hours of heartache...
I've added some notes here: https://hackaday.io/project/3110/log/10488-test-circuit-arduino if anyone is still having trouble connecting they might help...
I Did not get any of my original mark 1 boards going, 4 hours of life wasted and all 5 were crap!
Rather than give up I ordered 5 more of the newer ones and had but much better luck - The newer ones have the LEDs, the extra pins AND the newer ESP8266EX chip and can have flash updated.
As the old modules do not have the flash programming pins broken out my recommendation is if your older style board does not work just dump it ($4 lost is better than no hair!) I unsoldered the chips in case I find a use later.
Newer boards playing much nicer, have tested 2 out of the 5 and both working OK, including TCP comms OK as per other successful users.
Regarding the boards, the manufacturer recommends a large capacitor in power line and 4-layer PCB, these are two layer and no cap, though they are better designed than the surface mount variety which seems to have the RF pin going through a via over the power trace and back through another via to the PCB antenna, FFS! :-)
On my multimeter max range I note the supply peaks at 356mA for a few milliseconds on power on with chip enable connected to vcc, but if you hold the chip enable low and power on you get a peak of 4mA, setting chip enable high then gives a peak of only 252mA, I will need to do a lot more experimenting if I will be using a battery and boost converter! Either way the larger capacitor on the supply pins is probably a must if you are designing a board yourself.
I have connected a FTDI board to the ESP8266 (board shown above). I try to get communication with the ESP8266 with no luck. I know I have to connect he FTDI Txd to the Rxd of the ESP8266, etc. The board communicates with a 3.3v logic level. The ESP8266 board also get 3.3v power. So I connected the Rxd, Txd, gnd and 3V3. I try to connect to the module with a hyperterminal. The red LED is on and the blue led flashes when I send data to the module. I don't get a response. What are the settings (baud, parity, data bits, stop bits)? Which command(s) should always give a response (AT+RST perhaps)? Is there a space between AT+ and RST? Please help ;) Thanks in advance.
Try 115200 or 57600 baud. Mine works on 115200 and one of my USB to TTL didn't work while a found another USB to TTL and this one works, so your FTDI board might not be able to communicate via 3.3v logic?
Did you also pull pin CH_PD high?
I do hope someone is working on a firmware fix for that "busy s" problem - I've set up a socket server and an android app with a couple of buttons to turn on and off... no problem. If you press the buttons continuously as fast as possible, eventually the ESP8266 will lock up after returning a "busy s..." signal.
Amazingly, even if you programmatically hold the RESET lead down for a half second and release - and send the setup commands for the socket server, it STILL says "busy_s" most of the time and power cycle is required - so it can't be a REAL reset. I noted someone said they had compiled new firmware to handle this but they'd based it on an old version of the firmware.
Has anyone made new firmware to tackle this issue?
Sorry about that - http://scargill.wordpress.com/2014/10/17/esp8266-busy-s/ but the busy s problem remains. I've just realised now I've slipped in the ability to feed serial from my PC into the working board, it's not REALLY busy as it can respond to an AT command - problem it is just responds with "busy s" - it HAS to be a simple firmware bug. I hope someone is working on this one, REALLY would appreciate a fix (and not reset).
Boz...did you ever get it working?
I'm having the same problems. If I set the baud rate to 76800 (I'm guessing that's 2x38400) and reset the module (touch a ground wire to the RST pin) I get this message:
ets Jan 8 2013,rst cause:2, boot mode:(1,7)
Apart from that, nothing. Zip. Nada. Zero response to anything I send, at any baud rate. I've got the CH_PD pin held high and the GPIO0 pin held low.
I have the module with two LEDs. Should the second (blue) LED flash when I'm sending data to the module? What does it indicate? Data connection or data transmission?
No luck getting an actual TCP connection with any firmware version I could find. Closest I got was using v 9.0, which allowed me to connect to an AP with no encryption and obtain an IP.
Seems like there is confusing/contradictory information on what to do with GPIO0. It only needs to be grounded when uploading firmware. Otherwise leave it disconnected.
This is going to be the death of me.. I've now taken onboard comments from folks - I'm setting up modes - resetting the board, it shows me access points - but will it HELL connect... here is the latest code (and thanks for suggestions guys) .
As you'll see I setup - I reset, I get a list of APs, I put in the correct details for my nearest (office) - which is in the same room!) - and check with CIFSR twice here.. waiting 8 seconds each - nothing - am I missing a command here? It simply won't return an IP address and so everything after that is a waste of time. CLEARLY it's working or it would not give back a list of APs???
Initiating with AT+RST
Sending AT+GMR restart
Sending AT+CWMODE? check mode
Setting user and pass AT+CWJAP="Office","192168l974"
busy now ...
Sending AT+CIFSR - IP address?
Sending AT+CIFSR - IP address?
I have to tell you - I was THAT far off throwing this board in the bin - until I
found 2 links, one of which accurately allowed me to update the FLASH in the
board and collectively got me connected. I've blogged where I'm up to now - I
can reliably connect to a website and grab info.. hope this is useful, I'll update soon once I get some code written.
If anyone knows how to set this up as a socket server to work with the likes of NETIO - all the examples I've seen show it opening up and going off to a website - I just want it to sit there and wait for incoming socket conversation and respond.
[this comment has been deleted]
I would look at the cloud update they provided. you need a Windows PC to get the firmware to 17 and then cloud update. I got this working much more reliably once on 00180920 (don't quote me on the exact #)
Try CWMODE=3. i have had no luck with CWMODE=1.
you are also correct JAP returns OK. the only way to know is to look for an IP address. I am working on a library to do exactly this. Works on Mega fine, but not with Software Serial and Uno/Nano.
Another item is to power the ESP8266 externally unless using Mega. And lastly, Serial connect to be sure it is all working. I find that external power works better (and necessary). All three 8266 seem resilient and working (even when accidentally using 5V)
I also have a temp sensor running http://services.toreken.net/t/phant.php using a Mega and Nano to source to systems.
So near yet so far. Having read comments by Peter further up, I'd spent 2 long nights working on this WIFI board thinking the WIFI section was BUST - and now it's listing WIFI access points. Wheeeee. But I cannot get it to attach to one.. I've modified Arduino code to send it commands and wait a few seconds to see any responses. Below you'll see - the first line in each case is just sent to the monitor - the rest is response from the unit. It seems to say OK no matter what rubbish you put in for an access point and password - in this case I've entered the correct unit and password.. but when I check (5 seconds later) for the IP address - you'll see I just get error - I assume all busy responses after that are due to it not actually being logged in... can anyone tell me what I've done wrong. I'm using the board which needs the PD line held to 3.3v...
Initiating with AT+RST
Sending GET /time1921681974.php HTTP/1.0
GET /time1921681974.php HTTP/1.0
busy now ...
busy now ...
busy now ...
Interested to know what problems you had as I may be having the same and dont have 2 nights to spare! I received my modules from electrodragon while I was on holiday and started looking at them this morning
Firstly I seem to have the old model (no leds) and different firmware as everyone else as the default speed is 74880 bits per second which I finally found out by putting my seleae logic analyser on the uart RX pin. Once I changed the speed I get the following on power on:
ets Jan 8 2013,rst cause:1, boot mode:(3,5)
load 0x40100000, len 28400, room 16
load 0x3ffe8000, len 2516, room 8
ho 0 tail 12 room 4
load 0x3ffe89e0, len 3120, room 12
However unlike everyone else I do NOT get the ready prompt and it does not respond to AT commands, also the logic analyser does not show any further transmissions after this so its not a case of the baud rate changing.
Hooked it onto my bench PSU at 3.3V and its drawing 140mA (216mA Peak), also tried my other modules in case I have a dud but its the same. I will persevere when I get back to the workshop in a few days, maybe get the scope out or try poking AT commands into it at different baud rates but so far not a promising start.
Thanks to all the comments, I was able to work through the ESP8266 modules I received a while back from electrodragon. I now have two of them talking to each other via TCP. But the best part is that I was able to to setup phant server (from sparkfun.com ) on my mac and have both of them publish data to the server easily.
But here is the deal. when i send the request to the phant server to store some values against keys, the http request (GET / HTTP\1.0 ) doesn't provide "OK" but somehow the request hits the server and the server is able to store the value. I am setting CIPMUX to 0 before this
Anybody can guess why this is the behaviour, I have both the esp8266 running on v091 and i have tried similar GETs against google.com and some of my own php code.
Hello, I've read about this chip and his SDK. I'm waiting for my module to test it.
One simple question to the one who already has work on this module.
Up to you, could it be possible to:
a) use SPI (and not UART) to exachange data with this chip
b) implement a WiFi configuration protocol (and eventually app) like TI do with his Smart Config
Maybe flashing some custom user rom to the IC.
the product is listed here. Seems three people have gotten it to function.
@SA0987, if the blue light is coming on and staying on, there's something wrong. Do you have CH_PD connected to VCC? It might also be the available supply current from your serial cables: the module apparently needs 100-300 mA, which appears to be a problem for people using Arduinos.
If you got yours from Electrodragon, it's probably already v0.91.
I now have it working on both a Nano and Uno R3. 0.91 appears to have 115200 for speed, needs reset (next to TX) to be high at all times, and a 5->3.3 V divider.
There are other issues also (not sure why they have not been mentioned). for RX/TX to work. I have to program the device, then disconnect the USB cable. Make it self powered (Nano need a separate 3.3. Could not use its 3.3) and the demo works. I added a delay since I encountered some issues opening serial ports and sending commands before the device was ready. I got two of the three modules to work with the same sketch on both R3 and Nano.
a) add voltage divider TX -> ESP RX
b) serial port 115200 on .91
c) add a delay
d) take the reset high at all times (see dragon link above)
and I get
OK, Connected to WiFi.
> GET / HTTP/1.0
on my router ----
1 10.0.57.100 18:FE:34:99:20:77
2 10.0.57.101 18:FE:34:99:20:5F
Has anyone who has it working measured the power? Specs seem impressive but keen to find out the
wake -> connect -> send data (say 1KB) -> receive data (1KB) -> sleep
Power consumption and time if anyones making progress here..
Holidaying in the UK for a few more weeks so not sure if my modules have turned up yet, also still waiting the proper translated chip documentation and SDK from expressif.com which was promised for last week
I started there, too, but I don't have the UartSBee so I tried cutting their code down to just using HW Serial too see if I could monitor the communication with the Serial Monitor. Not much luv for me so I set out to explore some other options which I put up on my site at http://hobbies.boguerat.com/?p=321. Essentially, I just attached the ESP8266 to an UNO with an empty sketch then started sending over commands with the Arduino IDE Serial Monitor. The 3.3v/Gnd/RX/TX were all mapped directly to the corrsponding pins on both. I managed to get connect to the AP and get a TCP server running. I was able to communicate via PuTTy for a few seconds before the TCP connection stopped. Then it just kinda died out on me. Will try again tomorrow.
ArsenioDev, perhaps you have one of the revision 2 modules. If so, make sure that the CH_PD pin (that's the pin next to TXD, which is labelled NC in the diagram you are following) is held high by being connected to +3.3V (via a resistor). Otherwise the module will be in a mode which will not respond to AT commands. R2 modules have two LEDS on them, one of which will be lit when the device is powered. There's a photo on my blog (http://robinsonia.com/wp/?p=360) if you want to check. R2 boards also use a baud rate of 115200, not 57600.
I'm actually having success now. I can reliably establish a TCP connection and send data back and forth. It works rather well, with some limitations. It helps that I came across some slightly better documentation here: https://drive.google.com/folderview?id=0BwK3EhAfht8uWTdBdG55NEFCakE&usp=sharing, sourced from this esp8266.com forum post: http://www.esp8266.com/viewtopic.php?f=5&t=48&p=341&hilit=command+set#p341 which lists a few more AT commands and some more illuminating explanations.
AT+CIPMODE=1 or 0 (1 is default) sets the data receiving mode of the socket. If it's 0, received data is simply sent to the serial port. If it's 1, data gets "+IPD,c,n," prepended to it, where c is the channel number and n is the number of bytes received. c is omitted if you are in single-channel mode. If you have multiple connections going in, this mode is logical. If you have only one, it may be simpler to use the transparent mode (0). But: see AT+CIPSEND below, because this is affected by AT+CIPMODE!
The usual documentation about this is a bit pants. Here's how it works. When you issue an AT+CIPSEND command, you normally tell it the channel you want to send it over (the chip can keep four IP connections going at once) and the number of bytes you want to send (call it n). The module then responds with a ">" character. It will then take the next n bytes you give it and send them over the TCP link. Then it responds with "SEND OK" and returns to normal, waiting for your next command. There are three variants of the AT+CIPSEND command, however:
AT+CIPSEND=channel,length is used if you have multiple connections open (AT+CIPMUX=1)
AT+CIPSEND=length is used for a single channel (if you have previously issued AT+CIPMUX=0 to tell it that you will only use one connection at a time)
AT+CIPSEND can be used without any parameters if you are using a single channel and transparent data mode (AT+CIPMODE=0). Note that there is no channel or length specified in this variant. After you issue the command, it will simply send every byte you throw at it directly to the receiving socket. This includes AT+ commands. Note that I have as yet found no way of exiting this mode other than resetting the module.
Also note that if you are in transparent data mode (AT+CIPMODE=0) and you try to use the variant of AT+CIPSEND which uses a length value, it won't just fail or ignore it, it will actually reboot the module.
Lesser known AT commands not in other documentation:
AT+GMR retrieves the firmware ID of the module. There are at least two versions in the wild.
AT+CIPSTO=60 Sets the socket timeout period to 60 seconds
AT+CIPSTO? gets the current timeout value
You might want to change this value because if the server closes the socket, and your timeout value is too high, there appears to be nothing you can do from the client end other than do a hardware reset. I'm thinking it's probably going to be necessary to tie the CH_PD line of the module to an output from the arduino, as I'm bound to want to reset from software at some point.
It's good to make some progress. I'm going to look at the using the module as a server next.
I've received a couple of these from electrodragon. Having spent half a day playing with them, these are my findings so far:
1) the 3.3V available from an arduino can't provide enough current to run the wifi module. It won't even respond to commands without a separate power supply. Powering it from one of these (http://www.dx.com/p/lm2596-sdc-dc-to-dc-debugging-power-module-w-0-4-3-digit-voltmeter-deep-blue-310730) works fine.
2) As jacksonliam said, you must connect the CH_PD pin to +3.3V. Don't be put off by the suggestion in the diagrams on Nurdspace.com that the four pins in the middle of the connector are not connected to anything. CH_PD is the pin next to the TXD pin.
3) The AT commands mostly work. AT+CWLAP briskly returns a list of visible access points. AT+CWJAP connects to my home router (or claims to). Beyond that, things get flaky. Actually setting up a TCP connection to a running server does not seem to work. Nor does sending UDP. both allow me to get to the point of sending data, but then simply respond 'busy' to any further command or data until the device is rebooted (by unplugging it from the power supply). I'm not convinced that the device is ever genuinely connected to my router: the router doesn't show it in the list of active clients.
I'm frustrated. It seems so close to being functional, but feels like the firmware is missing some useful commands and diagnostic information. Or maybe it's the documentation. Perhaps if my Chinese was better...
I only got this far too, but I think mine was because of the lack of current. I saw "busy..." when I typed the 'start connection' command in wrong. I set mine in single connection mode.
I think the command is the requires the length of data you'll send, followed by a comma and then the data.
Can you post the output of the chip's response to AT+CWLAP before and after you issue the AT+CWJAP? I am most interested in the mode character. If you connect to your access point and power cycle the device and you send AT+CWLAP again, does the mode character stay the same?
If you want, feel free to change the names of some of the APs for privacy.
I've got it successfully sending data, albeit hooked up to an FPGA that can definitely deliver enough current. I left CH_PD floating, but my logic analyzer seems to think it's high anyway.
Does your module report the expected IP address if you issue the AT+CIFSR command? Does it respond to pings? Have you tried it in single connection mode (what I used)?
I've got the newer firmware running at 115200 baud, and the chip's sending data with both CR and LF so I assume it expects both as well. There is no mode parameter in my CWLAP responses.
Bafelgum, I'm working at 115200 baud. It seems to be a version 2 board (CH_PD and IO pins are connected). I do send CR and LF after each command, not just CR.
This morning, it works. Here's what I get (output is sanitised to remove wifi identifiers). Firstly, after AT+RST:
ets Jan 8 2013,rst cause:4, boot mode:(3,2)
load 0x40100000, len 24236, room 16
ho 0 tail 12 room 4
load 0x3ffe8000, len 3008, room 12
load 0x3ffe8bc0, len 4816, room 4
After powering off the device (but no other commands):
So it thinks it is connected. The mode character (if that's what it is) does not change. The router shows the device as "Unknown-18-fe-34-..., MAC Address 18:fe:34:99:20:5c, IP address 192.168.1.90). AT+CIFSR reports 192.168.1.90. I can then set up a connection and both send and receive data (I'm running a simple tcp server at the other end, from which I send the "aaaaa" data).
Goodness knows why it works today but didn't work the day before yesterday...
There is still a problem if the connection gets dropped, as there seems to be no way to reset the wifi module without powering it down. It gets itself into a state where it responds 'busy' to each character it receives, and nothing can be done. That's the next hurdle.
I got mine today from electodragon in the EU http://www.electrodragon.com/w/Wi07c I ordered it on the day I tipped HAD about this chip.
Its their 'new' version (LED on the very right edge of the board), of which mine runs at 115200 baud and requires both NL and CR after every AT command.
This version looks to have GPIO0, GPIO2, the RESET pin and CH_PD broken out, not sure if this will be the same for the aliexpress modules. CH_PD had to be tied to VCC for the module to boot.
When CH_PD is low its in 'firmware upgrade mode', though no details are given of how that works.
It spits out this when I run AT+RST
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
load 0x40100000, len 24236, room 16
ho 0 tail 12 room 4
load 0x3ffe8000, len 3008, room 12
load 0x3ffe8bc0, len 4816, room 4
Something made me laugh, "AT?" replies "no this fun".
It needs about 250-300ma at 3v3 to do fun stuff, I don't think I have anything that can provide that (all my stuff is 150ma max) I'll have to make up a makeshift battery holder with tinfoil and tape.
some info on the GPIO functions is shown here, but not translateable as it is in a picture
I found all the characters from the picture in the documents, and translated them with google translate.
At first it translated something to "on power-up state" but then it changed to Power Status, so I left both in.
A Proper english (not google) translation of the ESP8266 chip specification is here
I got this by asking the company espressif.com directly. I have also requested a copy of the english technical documentation, they have asked me to sign an NDA (WTF) but that OK I will do that as I would like to try and integrate the chip on my project on a later revision, I'm sure the silly NDA restriction will only last until the chinese translations are widespread then I can add it to my public document library. The people at espressif.com seem to speak genuinely good english so I am expecting some decent english documentation in a few weeks when it has been produced
my hackaday project: http://hackaday.io/project/1915-Data-Collection-Terminal
An obvious note here, the modules are NOT the same as the chip, the modules look to be third party products by the look of it which adds an SPI flash chip and its own serial to Wifi AT command set so expect to see a lot more cheap wifi modules around the $5 mark
The ESP8266 chip iself looks to be SPI controlled and has 3 channels to control SPI slaves plus serial and some GPIO. I thought it was an ARM SOC as it mentioned a thumb instruction set (somewhere), but I am no expert on these things.
Excellent find! I'll add it to the links later. I have also been in talks with espressif to try to get the English documentation. How extensive is he NDA? I wonder what the ramifications of publishing a library based off the documentation would be.
For clarification the properly translated document I posted was just the specs, they never mentioned NDA for that and its widely available in chinese so I posted it, they want the NDS for the technical documentation (the meat of the system: programming, registers, pcb antenna design stuff etc)
I am still waiting a reply on the NDA I haven't received/signed anything yet, but they did say that the translation wont be ready for about 10 days
The NDA will restrict publishing the material directly but shouldnt restrict creating a fully open source interface - similar to how the raspberry pi hardware used to be, we diddnt know all the details but had enough to make everything work
Also a small mistake on my part, its 1 SPI slave channel and 3 enables
SDIO 2.0, SPI, UART
32-pin QFN package
Integrated RF switch, balun, 24dBm PA, DCXO, and PMU
Integrated RISC processor, on-chip memory and external memory interfaces
Integrated MAC/baseband processors
Quality of Service management
I2S interface for high fidelity audio applications
On-chip low-dropout linear regulators for all internal supplies
Proprietary spurious-free clock generation architecture
Integrated WEP, TKIP, AES, and WAPI engines
Wi-Fi Direct (P2P), soft-AP
Integrated TCP/IP protocol stack
Integrated TR switch, balun, LNA, power amplifier and matching network
Integrated PLLs, regulators, DCXO and power management units
+19.5dBm output power in 802.11b mode
Power down leakage current of <10uA
Integrated low power 32-bit CPU could be used as application processor
SDIO 1.1/2.0, SPI, UART
STBC, 1×1 MIMO, 2×1 MIMO
A-MPDU & A-MSDU aggregation & 0.4ms guard interval
Wake up and transmit packets in < 2ms
Standby power consumption of < 1.0mW (DTIM3)
at least in theory in our hands are: toolchain, documentation, example code
is the serial flash memory mapped or is its content copied to RAM at boot?
is there internal flash memory in the chip?
can the firmware be upgraded OTA? (fragments in the "SDK" tell yes)
how to obtain missing documentation? e.g. configuration of peripherals
where to find "xtensa xplorer"
what jtag probe is suitable to debug this chip?
with enough serial flash memory (assuming it's memory mapped) is there a way to run openWRT?
And guessing from the compiler Name xt-xcc - this is probably Xtensa (former Tensilica now Cadance) CPU Core
Having a look at the Linkerfile (of the IOT SDK) - probably reveals the following specs:
dport0_0_seg : org = 0x3FF00000, len = 0x10
dram0_0_seg : org = 0x3FFE8000, len = 0x14000
iram1_0_seg : org = 0x40100000, len = 0x8000
irom0_0_seg : org = 0x40240000, len = 0x32000
I don't have experience with wifi modules, but I have written libraries for Ethernet modules. From the AT commands in the documentation, it looks very similar to what I have worked with before. I'm going to write the AT command library for the MSP430, but if I get time I will port it to AVR and PIC if there is interest.
From the comments it looks like there is some strong interest to get custom code running on the processor. I don't have experience with the architecture it uses, but it should be interesting to get working.
Sorry, I got a bit confused by the SDK but now I see that with the AT commands given it should not be too hard to get that ported to the arduino (cheap and easy) platform as well. Could be interesting to port it to the fubarino and I don't see why it should be a problem, when it really is a serial module.
I'm not sure if I would want to reprogram the units but it sounds interesting, too.