[Arm-netbook] Free Software compatible Hardware for the Internet of Things ? (was CC3000 Wi-Fi for MCU)

Guillaume Fortaine guillaume.fortaine at devopspace.com
Fri Jan 27 10:20:20 GMT 2012


Hello,

First of all, I would like to wish you and the people around you an
happy new year.

Working on the Internet of Things topic, I have read with a lot of
interest this thread :)

Especially, I would greatly appreciate to go one step further about
the Free Software requirements mentioned in it by trying to generalize
them to the Internet of Things :


I) 802.11

But let's start by the beginning with the TI CC3300 Module that,
according to TI, will be an enabler for the Internet of Things. A
quick overview at its datasheet will prove you that it is totally
wrong, given that it doesn't support IPv6 [0].

As well, I have tried to contact the Module manufacturers (LSR and
Murata) to know if they planned to Open Source the Firmware to give
people the opportunity to implement IPv6 and, of course, I am still
waiting a reply.

So, there is clearly a business model, at least in this case, by Open
Sourcing the firmware. Thus, to complement luke's argumentation, I
would firstly say that Open Source is clearly an enabler for
innovation, hence, creating more value-add not only for the
manufacturer but also for the customer.

One could go further and try to do his own module, with its own
firmware. Especially, to quote [1]:

"Otherwise, if yu want to implement the WHOLE Firmwarem  (the  specs  are
free and open) with a small low-power Cortex M3 and the  Maxim  MAX2828,
MAX2829 or MAX2831 you can do whatever you want..."

Wifi Modules are mainly based around an ARM9 baseband (ARM946E-S core)
[2] that's why a Cortex-M3 is clearly not up to the task and at least
a Cortex-M4 (with DSP) [3] would be needed for a mere 802.11b
throughput. By the way, there have been various attempts to provide
Open Source Microcodes for WiFi Modules and I will try to list the one
available to my knowledge below :


1) Lower MAC (LMAC)

a) CARL9170 Firmware Source Repository [4]

"Community AR9170 Linux firmware"


b) FreeMAC [5]

"FreeMAC overview

-The goal of this project is to write a firmware for all Conexant
wireless chipsets from scratch. The advantages are :
-You will be able to run your wireless station on 100%-free software
-You can have high-quality wireless drivers, without suffering from
firmware bugs or limitations that can't be fixed because of
proprietary licences
-You can hack whatever feature you want into the firmware
-You can use your wireless device as a powerful ARM developement
board, with a 946E core clocked at 30MHz
-With some electronics skills, you can add whatever you want to your
wifi card (LCD, keypad, ...). They have an I2C bus which can be easily
tapped.
-You can learn how your device works in detail"


c) b43-ucode [6]

"OpenSource firmware for Broadcom 43xx devices"


d) OpenFWWF [7]

"OpenFWWF, Open FirmWare for WiFi networks, is a project that wants to
provide an easy and inexpensive platform to implement new Medium
Access Control (MAC) mechanism, and wants to be a valid alternative to
simulations and expensive ad-hoc platforms. The combination of
OpenFWWF and b43 driver is a complete and cheap tool that makes
testing of new MAC easy achievable."



2) Upper MAC (UMAC)

a) Open Source 802.11 API for modules and IC [8]

"Sagrad,  Inc is supporting GPL licensed project with free release of
the source code that will allow customers unprecedented access to the
low level radio control.  This low level controlled radio enables a
host of new applications which have not been possible previously.
This open source project should lead to an completely open source mac,
and this project is being supported by a number of large commercial
companies.  For now, it instantly enables customers to implement
custom protocols and applications using the low cost silicon normally
used for 802.11.  This open source project allows many projects to be
completed with very low cost microprocessor solutions.  Our sample
code provides a simple pack transmission and reception scheme which is
interoperable with other 802.11 chip sets but does not yet implement
connection tracking schemes needed for standard 802.11. Our code base
fits into one of the smalled STM32 micro processors."


Unfortunately, from my point of view, the 802.11 protocol seems to be
too complicated to be community supported.



II) 802.15.4

One could argue that there is also 802.15.4 [9] .  Especially, there
are very interesting Open Source projects around this standard :

1) Linux

a) Ben WPAN [10]

"Why not just make a WiFi Project (since that is what people are using now)?

The trouble with WiFi is that all the "interesting" chips are
considered too valuable to give into the hands of the unwashed masses
without due precautions. Such precautions include niceties like
handing out hardware design documentation only under NDA, keeping
register-level interface descriptions under NDA, requiring closed
sources firmware, only selling large minimum orders through official
channels, and so on.

All this means that such technology is currently incompatible with the
goals of copyleft hardware, and would also be expensive to implement
or, in the case of using modules instead of chips, severely limit our
design choices.

Things will probably improve in the future (e.g., some chips intended
for much larger devices than the Ben are already reasonably open), at
which time it may be relatively painless to add WiFi compatibility.

IEEE 802.15.4 also has several technical benefits over WiFi, including
much lower power requirements and better spectral efficiency.
Furthermore, with IEEE 802.15.4 being considerably less complex than
WiFi, the possibility to migrate from chips with fixed functionality
to an SDR solution is more likely.

IEEE 802.15.4 is used extensively for sensor networks and similar
applications, opening the potential of further uses beyond the beaten
path. (E.g., applications in Domotics.)"


b) Linux IEEE802.15.4 stack [11]


c) Linux based Wireless Sensor Networks [12]

"The main goal of this project is to involve Linux IEEE802.15.4 stack
into WSN design."



2) MCUs

-uWireless [13]

"Kernel Abstraction Layer

-Support multiple operating systems" [14]


But, I would counter-argue that 802.15.4 is flawed by design [15] :

"(N.B. Ironically, 6LoWPAN, a wireless spec written specifically to
allow IPv6 over low power wireless, is kind of silly, because it is
802.15.4 based and hence it is largely incapable of achieving any of
the useful features of IPv6.)"


So, why not to start from scratch as suggested in the top of this post
and develop a SDR for Microcontrollers with an innovative and FSF
compatible wireless standard (MAC/PHY) supporting full IPv6 [1] ?

Clearly, the KISS (Keep It Simple Stupid) philosophy is a good basis
to move forward. That's why, a simple project like Myradio SDR could
be a potential candidate [16] :

"Myradio is a highly experimental project for implementing a wireless
PHY and lower-MAC in ATmega8 controllers.

The PHY uses very simple (dumb) radio hardware. I currently use these
simple modules as lowlevel radio. A simple R2R resistor network is
used for connecting the PHY microcontroller to the TX radio.

-Does it work?

Yeah, it does sort of work. Valid packets can be transmitted and
received. You still can't do anything useful with it, however. :)"


However, even if this project is great, to have a truly usable SDR
Module would require a significant engineering effort for the PHY &
MAC layers.

To be continued ... :-)

Best Regards,

[0] http://e2e.ti.com/support/low_power_rf/f/851/t/159342.aspx
[1] http://lists.phcomp.co.uk/pipermail/arm-netbook/2012-January/002191.html
[2] http://wiki.laptop.org/go/Marvell_microkernel
[3] http://www.st.com/internet/mcu/subclass/1521.jsp
[4] https://github.com/chunkeey/carl9170fw
[5] http://lekernel.net/prism54/freemac.html
[6] http://git.bues.ch/gitweb?p=b43-ucode.git
[7] http://www.ing.unibs.it/~openfwwf/
[8] http://www.sagrad.com/opensource/
[9] http://en.wikipedia.org/wiki/IEEE_802.15.4
[10] http://en.qi-hardware.com/wiki/Ben_WPAN
[11] http://linux-zigbee.git.sourceforge.net/git/gitweb.cgi?p=linux-zigbee/kernel;a=shortlog;h=refs/heads/6lowpan
[12] http://code.google.com/p/linux-wsn/
[13] http://www.artist-embedded.org/docs/Events/2010/RT_Kernels_Pisa/slides/S4-wireless-Franchino.pdf
[14] http://www.ipermob.org/files/DemoSAT/afternoon/IPERMOB_SSSA.pdf
[15] http://dash7.org/blog/?p=1782
[16] http://git.bues.ch/cms/unmaintained/myradio.html

Guillaume FORTAINE



More information about the arm-netbook mailing list