Please note that I used a MAX3232 level convertor between the PC and the circuit shown below, because I regularly use one of these for all of my embedded projects and with the additional invertor below, I just needed to add this to my existing serial level convertor. I'm sure you're wise enough to not connect the Zaurus to a regular PC serial port directly, but just in case...
Disclaimer:
I will not be held responsible for any damage caused by the instructions
contained in this document. All modifications are at your own risk. Blah blah,
void where prohibited by law, no parking, beware of the dog, contents may
settle during shipping, no user-serviceable parts inside, and if you let the
magic smoke out, it's your own fault.
Now that we've got that out of the way...
________________ Socket: 1 ================ 16 ---------------- 1 3 5 7 9 11 13 15 --------------------------------- Plug: | // // // // // // // // | | // // // // // // // // | --------------------------------- 2 4 6 8 10 12 14 16 Looking into the Zaurus EXT socket, the pin on the left is pin 1. The pin on the right is pin 16. Looking from the rear of the socket, the top row of pins are 1, 3, 5, 7, 9, 11, 13, 15 and the bottom pins are 2, 4, 6, 8, 10, 12, 14, 16. The two plastic 'bumps' of the plug are on the side with the even pins (the bottom). On the top row of the socket, the key 'bump' is on the right (not shown in the above 'drawing' because my choice of ASCII chrs is rather limited). GND is pin 8 (fourth pin from the left, bottom row) Vcc is pin 11 (6th pin from the left, on the top row) SD (transmitted data from the Zaurus) is pin 3 RD (data to the Zaurus) is pin 4 RS (RTS from the Zaurus) is pin 5 CS (clear to send, to the Zaurus) is pin 6 There are DR (Data Set Ready, pin 7) and ER (Data Terminal Ready, pin 14) lines: I didn't use these. Voltage levels: Vcc (3.3V, pin 11) is on constantly, even when the device is switched off. SD (pin 3) is high constantly, even with the device off, but it goes low when the serial port is open. RD (pin 4) is a high-impedance input. With the Zaurus (SL-5500) on and serial port closed: SD is at -0.6mV RD is high-impedance CS is high-impedance RS is high (3.25V) *** Important *** The data voltage levels are inverted, compared to a normal serial cable. Mark Space Idle condition ---- ----- -------------- Zaurus: +3.3V 0V Mark (3.3V) PC: -5V to -12V +5V to +12V Mark (-5V to -12V) Please excuse this crude ASCII 'drawing': Simple invertor circuit (used to invert the 3.3V levels from a MAX3232 serial port convertor): o-----------------------------------+-----------------------------o Vcc (3.3V) | # # R1 1K # | +-----o Output, to PC level convertor | | / From Zaurus R2 10K |/ TR1 2N3904 (or any NPN transistor) SD line | o---------------####---------o---| |\ \| -\ | | o | # # R3 100R # | o-----------------------------------+-----------------------------o 0V This is a simple transistor invertor. I found that the component values given were okay for the 3.3V level convertor that I was using, and were okay for the Zaurus as well. You'll need two of these: one to invert the Zaurus' SD data, and one to invert the data going to the RD line (from the PC level convertor). Don't forget to add a decoupling capacitor or two: I used a 10uF + 100pF, in parallel. I tested this interface using Minicom on Ubuntu 9.10 on an Athlon64-3200 PC, and a Sharp Zaurus SL-5500 (Collie) running OpenZaurus 3.5.4.1. I considered using an op-amp instead of a transistor, because I could then flip the polarity by using the non-inverting input or inverting input. I didn't do this at this time because op-amps require a balanced supply (I think that's what it's called - my electronics knowledge is old) and because my soldering is bad. Lex, 27-Nov-09Here's an example of a console log, from the Collie:
Linux version 2.4.18-rmk7-pxa3-embedix-3.5.4.1-rc4 (mhentges@mhcln01) () #1 Tue, 20 Jun 2006 06:56:23 +0200 CPU: Intel StrongARM-1110 revision 9 Machine: Sharp-Collie Security risk: creating user accessible mapping for 0x00000000 at 0xe8000000 Security risk: creating user accessible mapping for 0x08000000 at 0xea000000 Security risk: creating user accessible mapping for 0xc2000000 at 0xf2000000 Security risk: creating user accessible mapping for 0x40000000 at 0xf0000000 On node 0 totalpages: 16384 zone(0): 16384 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: console=ttyS0 root=/dev/mtdblock4 rootfstype=jffs2 jffs2_or phaned_inodes=delete mem=64M Relocating machine vectors to 0xffff0000 Console: colour dummy device 80x30 Calibrating delay loop... 137.21 BogoMIPS Memory: 64MB = 64MB total Memory: 62328KB available (1689K code, 363K data, 80K init) Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes) Mount-cache hash table entries: 1024 (order: 1, 8192 bytes) Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket GA Chip: L1 UCB1200 generic module installed suspend temp = 501 RCSR = 2 suspend main adc = 648(648) fatal chk = 417 apm: BIOS version 1.2 Flags 0x02 (Driver version 1.14) apm: Current AC Status : 1 batok installed Starting kswapd JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB. comadj = 117,44414d43,44414d43 Console: switching to colour frame buffer device 60x53 Collie frame buffer driver initialized. keyboard initilaized. pty: 256 Unix98 ptys configured Serial driver version 5.05c (2001-07-08) with no serial options enabled COLLIE serial driver version 1.3 ttyS0 on SA1100 UART3 (irq 17) ttyS1 on SA1100 UART1 (irq 15)ttyS2 on SA1100 UART2 (irq 16), using IRDA touch adj= 19640,25093,-1638400,-2949120 ucb1200 touch screen driver initialized sharpled_init: done. SA1100 Real Time Clock driver v1.00 block: 128 slots per queue, batch=32 Uniform Multi-Platform E-IDE driver Revision: 6.31 ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx loop: loaded (max 8 devices) PPP generic driver version 2.4.1 PPP BSD Compression module registered ide-cs.c 1.26 1999/11/16 02:10:49 (David Hinds) Collie Sound Driver Installed TC35143F audio driver initialized MTD Sharp chip driver <ds@lineo.com> SA1100 flash: probing 32-bit flash bus Using static partition definition Creating 6 MTD partitions on "SA1100 flash": 0x00000000-0x00020000 : "Angel Monitor" 0x00020000-0x00040000 : "CF Updater" 0x00040000-0x000c0000 : "Diagnostics" 0x000c0000-0x001c0000 : "kernel" 0x001c0000-0x00fe0000 : "jffs2" 0x00fe0000-0x01000000 : "angel stuff" Linux Kernel Card Services 3.1.22 options: [pm] SA-1100 PCMCIA (CS release 3.1.22) sa1100_pcmcia_init(0) sa1100_pcmcia_init(1) Frontlight Driver Initialized. NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 4096 bind 4096) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com IrCOMM protocol (Dag Brattli) VFS: Mounted root (jffs2 filesystem) readonly. Freeing init memory: 80K Warning: unable to open an initial console. BlueZ Core ver 2.4 Copyright (C) 2000,2001 Qualcomm Inc Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> BlueZ L2CAP ver 2.3 Copyright (C) 2000,2001 Qualcomm Inc Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> BlueZ RFCOMM ver 1.1 Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> usbdcore: usbdcore 0.1 035 2002-06-12 20:00 (dbg="") net_fd 0.1 035 2002-06-12 20:00 (dbg="",alwaysup=0,OUT=64,IN=64) vendorID: 4dd productID: 8004 sa1100_bi 0.2 035 2002-06-12 20:00 (dbg="") bi_modinit: call udc_startup_events bi_device_event: call udc_enable bi_device_event: call udc_all_interrupts sd : cmd [ 55 ] response [ 05 ] Partition check: mmcda: mmcda1 mmcda2 SD Driver Initialized. sharp_mmcsd 0.21 27 Sep 2002 VFS: Disk change detected on device mmcd(60,1) mmcda: mmcda1 mmcda2Return to the Zaurus projects page