Shaggy's Shannon Support Center

Shaggy's Shannon Support Center

Last Partial Update: Tuesday, August 28, 2001

Note: this site is still under construction!

Right now, it's being updated almost every day, so come back from time to time to get more info. And feel free to email me if you think there's something that belongs on here.

Cool Jobs!

If you're interested in working on cool software for devices like the Shannon (and also the Shannon itself-- we've still got a bunch of them as development boxes), check out We're currently hiring talented people with kernel skills, StrongARM skills, Java skills, etc. Email me if you're interested or want to learn more.

If you like working on devices like this (or the PSION Netbook, or Compaq IPAQ, among others) and would love to see your code become part of a real product, get in touch with us ASAP! We're now growing very rapidly, so these opportunities won't be around long...


Current firmware revisions being shipped:

sboot changes:

(note that some 2.4-a phones did get delivered. Also, if you've got anything older than what's listed here, you're in serious need of an upgrade, which will have to be done "the hard way" since the older versions have no flashcard upgrade capability)

Shannon specifications and features:

'Documented' escape sequence:

(press ESC when the logo fades in to get to the maintenance menu, then pick one of the following sequences)

Undocumented escape sequences:

Booting from the ethernet:


use the e!0 or e!filename device

Note that only one ethernet card is supported, the TDKLan LAC-CD021L, due to the Shannon's PCMCIA port only supporting 3.3V cards. The driver for a variety of 3COM 3C589 cards is compiled into sboot, but the hardware will need to be modified to support 5V. It is also unknown as to whether this driver will actually work on the Shannon. It works on the Brutus, and the core sboot code is the same for both the Shannon and Brutus, so it ought to work when 5V is supplied, but this cannot be guaranteed.

Booting from a flashcard:


use the h! or h!filename device

to list all accessible files on the flashcard, type the following at the sboot prompt:

	c h!. -
If your ATA flashcard does not seem to be detected, try the following:

The following PCMCIA ID substrings are used to detect an ATA flash card: (more could be added in the future)


The h! device does not know any particular filesystem or partition format. Instead, it uses SOLO-style mapfiles, generated by the 'mksolo' utility. These are layered on top of any other filesystem format, and serve to describe the files that are needed at boot-time. (not just the kernel, but also any support files needed-- config files, drivers, etc). It is possible to write to these files using the h! device, but they will remain fixed in size, since the native filesystem format is not known. (therefore, the c/z command might be useful, to zero out any unused portions)

Code for reading/writing files through the mapfiles, and the mksolo utility itself, will be added here soon. (incomplete)

Network/PCMCIA debugging flag:

The environment variable 'netdebug' can be set to a bitmask which enables various debugging features. Here is a table of the values for it:
	NETDBG_ETH_RECVSHOW = 0x00000001,
	NETDBG_ETH_SENDSHOW = 0x00000002,
	NETDBG_ETH_RECVDUMP = 0x00000010,
	NETDBG_ETH_SENDDUMP = 0x00000020,
	NETDBG_ETH_INIT     = 0x00000080,
	NETDBG_UDP_RECVSHOW = 0x00000100,
	NETDBG_UDP_SENDSHOW = 0x00000200,
	NETDBG_UDP_RECVDUMP = 0x00001000,
	NETDBG_UDP_SENDDUMP = 0x00002000,
	NETDBG_BOOTP_STATUS = 0x00010000,
	NETDBG_BOOTP_INFO   = 0x00020000,
	NETDBG_TFTP_STATUS  = 0x00100000,
	NETDBG_TFTP_INFO    = 0x00200000,
	NETDBG_PCMCIA_INIT  = 0x08000000,
You should logically or these values together and then set netdebug, for instance:
to turn on everything relating to bootp and tftp.

Communicating with the monitor:


When in debug mode, the default monitor talks the Styx protocol, initially at 9600bps, although this can be changed up to 230.4Kbps by writing to the 'ctl' file that is exported.

Getting files onto the phone:


either use ARM tools and copy from the D! device, use the ethernet, and copy from the e! device, use flashcards, and copy from the h! device, or use styxmon and copy to the flash0* partitions.

Boot Parameters:

The BootParam Interface structure (BPI) passes information on from the monitor and boot loader to every program executed by them (kernels, test programs, sboot, etc). It also provides an interface that allows each program to call into some of the functionality of the monitor in a portable way. This includes the ability to read/write the debug console without knowing what it is.

This structure is defined here.

Changing flash protections:


Make sure you know what you're doing before you attempt this. If anything changes the first 16K of the flash memory to anything other than a correct monitor image, then your Shannon phone will be transformed into a paperweight. (don't expect to ever get another one if this happens!)

Underneath the phone, if you remove the memory expansion, you should see a set of contacts that looks like the following:

        o  o  o  o

           o  o  o
          /   |
        gnd  +12V

Basically, you need to connect (temporarily) +12V to the middle pin in the bottom row, and ground to the left pin in the bottom row. Make sure you connect ground first, and then don't miss with the 12 volt wire!

To unprotect the flash, while 12V is connected, type "P/u 0" at the sboot prompt. If 12V is not detected, the command will wait up to 60 seconds.

To protect the flash, while 12V is connected, type "P/p partition" where "partition" is a name or number of a partition. Note that lockable sectors don't always line up perfectly with partition boundaries. Use the map command "P/m" to list the sector mappings and to show the protections. An 'f' means the sector is completely protected, a '0' means it's not, and some number in between means it is partially protected, and you'd better redo the last command.

Note: while 12V is supplied, all protections are temporarily disabled, so you can write anywhere to the flash, and the map command won't show the protections, even though it still keeps track of them internally.

Ordering expansion memory for your Shannon:

The Shannon takes 72 pin EDO SODIMM memory modules. The stock device comes with 8MB soldered internally, and an 8MB expansion card. You can purchase 16MB and 32MB cards which will bring your total up to 24MB or 40M, respectively.

The following memory expansion cards from Crucial Technologies ( have been ordered and tested and appear to work fine with the Shannon:

Ordering PCMCIA flashcards for the Shannon:

The Shannon should, theoretically, read any 3.3V PCMCIA ATA flash card, including compact flash with an adapter. However, there appear to be some problems with random corruption with some cards, most notably the 4MB Kodak Digital Science picture card (compact flash).

The following have been tested and appear to work:

Various bits of documentation:

Note that these docs are very out-of-date by now, so read them over, and use them loosely as a reference, but don't expect everything to work as stated.

Links to interesting/useful places:

Links to sites mentioning/describing the Shannon:

Note that these sites refer to the product by its proper marketing name, of course, and not as a 'Shannon'.

Additional help and info:

Questions? Comments? S Send me mail (see above)

[Counter!] people have visited here since September 17th, 1999.