Thinfirm 1.5

From OLPC
Jump to navigation Jump to search

This documents the project to create a thin firmware and libertastf driver for the XO-1.5.

Introduction

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.

Releases

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).

ID Milestone Deliverable Tests Status
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

Thin firmware spec

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.

  • wireless-testing on Obelix
  • working kernel image on XO-1.5
  • Does XO-1.5 boot?
  • Does network work with standard libertas full firmware?
Done
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
  • Driver 0.01 - new libertastf_sdio
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
  • Driver 0.02 - new libertastf_sdio
  • unmodified full firmware
Check that libertas_tf_sdio can get through probe and load full firmware. Verify in debugger that firmware

is running.

Done
4.3 libertastf_sdio get MAC address
  • Driver 0.03 - new libertastf_sdio
  • unmodified full firmware
Verify that driver can get valid MAC address during setup. Done
4.5 libertastf_sdio with full firmware
  • Driver 0.1 - new libertastf_sdio
  • unmodified full firmware
  • packet injection test - use packetspammer
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
  • Driver 0.1 - new libertastf_sdio
  • modified full firmware - remove drop of full 802.11 packet by sdio subsystem
  • packet injection test - use packetspammer
Check that 802.11 packet makes it to air using sniffer Done
5 Thin firmware
  • thin firmware 0.1 - supports management frames
  • Associate to AP
  • Ping
Done -
6 Monitor interface
  • Driver 0.2
  • thin firmware 0.2
  • iw add rtap0 interface
  • sniff packets
Done
7 Mesh
  • Driver 0.3
  • thin firmware 0.3
  • Associate to mesh
  • Ping
Done
8 AP mode
  • Driver
  • thin firmware
  • Use hostapd to setup AP
  • Connect to XO-AP and ping it
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.

Links