My Amstrad E3

What is it?

The Amstrad E3 emailer is a videophone/email/web thingy designed for the consumer market that runs Linux. It's currently selling for £29.99 in places like Argos and Dixons, and there have been reports of it selling for £14.99 or less in Tesco.

Hardware wise it's a TI OMAP 5910 at 150MHz, with 128KB of NOR flash containing the bootloader, 32MB of NAND flash and 32MB of SDRAM. There's a passive 12bit colour LCD at 480x320, OHCI USB host, a hardware 56k Conexant modem and a built in camera. Oh, and it has a full keypad and a keyboard that pulls out from the base. It's quite a nice toy for under £30. :) (I bought mine back when they were £59.99 and they were originally selling for £99.99)

Amstrad subsidise the cost of the hardware by requiring that the E3 make a daily premium rate phone call (0911 3430006 I believe), which costs about 17p. In addition the E3 will also show adverts on its screen, which can be deleted. These are picked up from an 0808 number - you're not charged for their download! Both of these facts are clearly stated on the box. If you've found this page in the hope of continuing to use the E3 as Amstrad intended but without making this daily call I'm afraid you'll be disappointed; this is about making alternative use of the hardware. I will not respond to emails asking for help avoiding these charges.

What does it run?

It runs Linux out of the box. A 2.4.18 based kernel that mounts a cramfs partition from the NAND. There's a 3.5mm jack on the back that's the serial port and although you can see kernel messages out of it by default there's no shell.

Amstrad have responded to my request for the GPL source used in the product; the kernel (2.4.18-mv30-E3) can be downloaded here (23M tar.bz2). It's based on MontaVista Linux - there's a preview kit available. The internal codename seems to be Delta - there are references to Gamma which is the codename for the older E2/Emailer Plus. However the code they've provided for the kernel isn't actually what the device is running. This is a violation of the GPL, which doesn't seem to bother them and hasn't interested anybody who holds copyright over the code.

A log of the console output during boot is here.

Getting a 2.6 kernel onto it.

Mark Underwood managed to get u-boot and 2.6.15 booting on the E3 to the point of providing USB and serial. I've since cleaned things up, added support for the NAND flash and LCD and sorted out the keypad map. Base patches have been sent to the linux-omap tree and are present from 2.6.16-omap2 onwards.

You can find Mark's work at http://the.earth.li/pub/e3/. My cleanups since are in the 2.6.16 subdirectory. I've also been trying to push our changes upstream, with the result that the mainline Linux kernel fromk kernel.org has base support these days, with a lot of additional bits supported in the linux-omap tree. A boot log from 2.6.19-rc4 is here.

The e3-hacking mailing list is the right place to discuss any work on this. It has full archives which you're advised to check before asking questions. There is also the #emailer channel on irc.freenode.net. This isn't a support channel however; it's usually used for discussing the current development tasks. Finally there is a fledgling wiki at http://wiki.earth.li/E3

More hardware details.

The 3.5mm jack is connected to UART0 on the ARM. Sleeve is GND, Ring is RXD and tip is TXD. Settings are 115200,8n1 the signals are suitably inverted to allow connecting it directly to a normal PC serial port. However you do run the risk of problems by doing this, as the E3 port isn't intended to handle normal RS232 levels.

I've taken it apart (1068x780 picture of the main board, I have others of the internals I haven't got sorted yet), and found the following chips:

TI OMAP / OMAP / POMAP5910JGDY / 4-38Z1058
The dual ARM/DSP core CPU that powers the unit.
PSC / A2V56S40ATP / 3469LA05 / TAIWAN-75
I think this is 256Mbit of SDRAM, but I haven't been able to find a datasheet for this exact part number.
ATMEL / AT49LV1024 / 90VC / 0333
64k x 16bits 3volt NOR Flash Memory
TOSHIBA J30388 / TAIWAN 03349AD / TC58DVM82A1FT00
32M x 8bits 3volt NAND Flash Memory
Conexant / Smartv.92 / CX81801-74 / E409542.1 / 0334 MEXICO
The v.92 modem controller. This seems to be a proper hardware chip rather than a softmodem of some sort.
Conexant / CX20442-11 / E416598.1 / 0335 KOREA
Voice codec for the modem chipset.
Conexant / 20493-21 / E391758 / 0326 KR
"SmartDAA" - line driver for the modem chipset.
Phillips TDA8024T / K3V558 / Pn604041
This is on the separate smartcard PCB and is an IC card interface. I've failed to find programing info for this; pointers would be welcome.

For picking up email the E3 dials 0911 343 000 6, which seems to be a normal PPP call using CHAP for authentication. It uses a username/password which appears to be common to all E3s. For web browsing it dials 0844 8555 024. Demon provide the ISP backend - I was getting IPs from the 212.225.42.0/24 (THUS-AMSTRAD) netblock.

Software details

The NOR contains the primary boot loader, imaginatively called PBL. This performs initial setup of the hardware and then scans and loads the second stage from NAND. PBL also offers a debug mode, which is triggered by writing 0x1B (ESC) to the console at 9600 baud; PBL will respond with an 0x06 when the debug mode is entered. Note that only PBL 4.9 will work at present; PBL 5.1 is known to have made changes preventing this mode from being entered. If you allow your E3 to receive updates from Amstrad then it's highly likely it will be upgraded to PBL 5.1

The second stage loader is stored in a Q;Q; format block in NAND, and is called LDR. It's responsible for finding the kernel parameters block and the kernel itself, then booting it. The kernel mounts a cramfs filesystem from the flash as its root, then pivot_roots so that the root is a ramdisk with a symlink farm into the cramfs.

I've had some success with hooking the E3 up to an Asterisk based PBX and setting up another modem to answer the call. With this the E3 can be made to pull new firmware updates, which I think I've decoded most of the format of. However I've managed to write over the kernel in flash doing this. :/ So I'm now looking at trying to get it working again through the use of PBL. I have a list of marked up functions. It looks like PBL can be told to call home and accept an image block over XMODEM-CRC. The number it dials eventually answers with voicemail, so my hopes of automatically being able to repair my flash were dashed. :( I think I'm close to being able to feed it a block to execute myself via this method though.

Other Resources

Ralph Corderoy has a page that's mainly about the original Emailer and the E2, but covers the E3 a bit. Jon Masters has also got a collection of Photos of the insides of the E3.