This documents the project to create a thin firmware and libertastf driver for the XO-1.5.
The XO-1.5 uses the Marvell 8686 module instead of the 8388 that the XO-1s used. There is thin firmware and a libertastf driver for the Marvell 8388. New firmware and modified libertastf drivers need to be written.
The latest firmware release is 9.0.7.p3 which fixes some issues with mesh. The latest driver commit is e5df42069d258ffae5d8480eb0c155f0179bea98, required for mesh to work.
 Project plan
Ultimately, we will deliver a thin firmware and a working libertas tf driver to go with it. These will work on XO-1.5. However, it's better to split the larger task into several smaller sub-tasks. These are outlined below (already completed sub-tasks prior to this breakdown are excluded).
|1||Compile full firmware build||sd8686.bin||Does full firmware load on XO-1.5?||Done|
|2||Thin firmware specification||Initial version of specification||Readable version of spec checked in.||Done|
|3|| wireless-testing kernel on OLPC?
Find out if wireless-testing will work on the OLPC. It's OK if some parts are broken, only concerned about booting with a command-line and full functionality of network and network tools. This will give us the ability to only work with one kernel.
SDd 4/19/2010 Found out that the libertastf in the XO-1.5 kernel's working tree is in-sync with wireless-testing. I'll work with this kernel since the XO will work and it's in-sync. Still need to confirm I've got a working self-compiled version on an XO-1.5.
SDd 4/20/2010 Changing the plan again->going to pull OLPC patches into a wireless-testing workspace and then work off that.
SDd 4/23/2010 Done. Note that commits ac1a474d71d6cbf94bf26889da5768f5f2b0ca2b and 96021f096e5178582af296a2fbb6df7dbd6b695c on April 15th broke libertas_sdio for OLPC. Was able to revert them and got it working. Perhaps I'll fix the problem in time, but it's not in scope of my project.
|3.5||Sync libertastf debug changes with current kernel||Patches sent to wireless-testing||libertastf works with debugging turned on||Done -> patches are in wireless-testing|
|4.1||libertastf_sdio download and run helper firmware||
||Check that libertas_tf_sdio can load the helper firmware by checking that it is running.||Done|
|4.2||libertastf_sdio download and run full firmware||
|| Check that libertas_tf_sdio can get through probe and load full firmware. Verify in debugger that firmware
|4.3||libertastf_sdio get MAC address||
||Verify that driver can get valid MAC address during setup.||Done|
|4.5||libertastf_sdio with full firmware||
||Check that 802.11 packet makes it to firmware by using break-point in debugger||Done|
|4.9||libertastf_sdio with full firmware passing packet to air||
||Check that 802.11 packet makes it to air using sniffer||Done|
 Full firmware note
Unlike the usb8388 thin firmware, the sd8686 thin firmware was built to continue to support the original Full MAC mode. It starts in Full MAC mode and only switches to thin firmware mode when sent a CMD_802_11_SET_MODE command with mode being one of LBTF_PASSIVE_MODE, LBTF_STA_MODE, or LBTF_AP_MODE. Setting LBTF_FULLMAC_MODE should return the firmware to the full MAC mode. This ability would permit OLPC to include a single file to support both firmware modes. Note that the libertas and libertas_tf drivers expect different firmware names by default, but this can easily be worked around by linking two different filenames to the file, or overriding the default names on module load.
In order to facilitate keeping full MAC mode intact, the WMM component had to be removed from the firmware due to space constraints, so QoS is not available in full MAC mode with this firmware.