Difference between revisions of "Flameman/zaurus-akita"

From eLinux.org
Jump to: navigation, search
(Overview)
(Blanked the page)
(Tag: Blanking)
 
(30 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= zaurus-akita-Flameman =
 
  
these pages are still in proof version, be patient i am spending my free time developing for the zaurus ... i can assure we have a lot of things to fix up =P
 
 
 
 
== Note ==
 
 
Apologize for the poor status of this ewiki, I am developing for this board, so the wiki page will be improved and completed as soon as it it will be possible
 
 
feel free to contact me (see the contact below) in case you need support.
 
 
== Introduction ==
 
 
 
The Target-goal of this page is
 
* install uc-gentoo into mmc-sd
 
* develop devices
 
* make the board able to boot it
 
* optimize uc-gentoo for embedded
 
* produce a uc-gentoo-uclibc
 
* add framebuffer and touch screen support
 
* re-target all the project into "tiny PDA"
 
 
 
=== People you could contact if you need help ===
 
 
* flameman, i'm currently use this board for a project, email
 
** msn daredevil-coder@hotmail.it
 
** email flamemaniii@gmail.com
 
** irc.nick flameman (channel #edev, #oe, #zaurus)
 
* you ... if you want ;-)
 
 
* buglist http://bugs.openembedded.net/buglist.cgi?bug_status=REOPENED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=UNCONFIRMED&bug_status=NEEDSINFO&field0-0-0=product&type0-0-0=substring&value0-0-0=akita&field0-0-1=component&type0-0-1=substring&value0-0-1=akita&field0-0-2=short_desc&type0-0-2=substring&value0-0-2=akita&field0-0-3=status_whiteboard&type0-0-3=substring&value0-0-3=akita&field0-0-4=longdesc&type0-0-4=substring&value0-0-4=akita&cmdtype=&remaction=&GoAheadAndLogIn=1
 
 
 
my bug http://bugs.openembedded.net/show_bug.cgi?id=5152
 
 
=== About this project ===
 
 
embedded target
 
 
=== About the board ===
 
 
 
=== Overview ===
 
 
Sharp has introduced a new model in its Zaurus line of Linux PDAs. The SL-C1000 is similar to the SL-C3000, but without an internal harddrive. As with previous Japan-only Zaurus models, the SL-C1000 will be available with internationalization features from a number of global resellers.
 
 
The SL-C1000 is based on a 416MHz Intel PXA270 processor. It boots from 128MB of Flash, and includes 64MB of RAM. The 3.7-inch color VGA touchscreen (640 x 480) supports 65K colors. The keyboard uses a stardard QWERTY layout.
 
 
The SL-C1000 includes memory slots for SD/MMC cards, as well as for CompactFlash cards. Additional I/O includes IrDA, USB, and LAN ports. It measures 4.9 x 3.4 x 1 inches (124 x 87 x 25mm), and weighs 10 oz (278 grams).
 
 
 
-----
 
 
==== specifications ====
 
 
Processor: Intel(r) Xscale(tm) PXA270 416Mhz processor
 
 
Memory: 128MB Flash, 64MB SDRAM work area
 
 
Display: 3.7" 640x480 VGA LCD screen with 65536 colours
 
 
Keyboard & Input: Full QWERTY keyboard, touch-sensitive screen with handwriting recognition
 
 
Expansion: One slot for CompactFlash (CF) memory cards (type I and II, 3.3V cards only), one slot for Secure Digital (SD) memory cards
 
 
Connectivity: USB host port (cable supplied separately) for connecting to printers and digital cameras. USB 1.1 link for attaching to desktop PCs - Zaurus appears as a computer in the network neighbourhood. CompactFlash (CF) card slot can take Wireless LAN (802.11b), Bluetooth, GPRS, Ethernet and Modem cards (supplied separately). Infrared port (IrDA, 115kbps) for communicating with mobile phones, laptops and cameras.
 
 
Audio: 3.5mm stereo headphone socket (headphones not included with C1000). Media player plays MP3 and WMA music files, and MPEG1 and Microsoft WMV/ASF video files. Dimensions: 124mm (width) x 87mm (depth) x 25mm (height)
 
 
Weight: 278g
 
 
Battery & power: Lithium Ion battery provides 8 hours (low brightness/contrast) Electrical:
 
 
Power Connector: gnd ----(+), ground outside, +5v inside
 
 
Power supply 240V converted to 3.2V DC by AC adapter. Power consumption 3.2W
 
 
Operational restrictions: Operating temperature 5-40 degrees centigrade
 
 
-----
 
 
==== more specifications =====
 
 
SPECIFICATIONS
 
 
Display Type:
 
DFSTN LCD, Touch Screen Finger or Stylus Operation.
 
 
Display Resolution:
 
320 X 240 dots (up to 65 char. X 20 lines)
 
 
Display Physical Size:
 
4.0" X 2.6"
 
 
On Board RAM:
 
1MB (approx. 665K user area) -
 
 
    * Appointments capacity: Approx. 9,600 entries
 
    * Contacts capacity: Approx. 9,900 entries
 
 
These capacities assume the following average entry sizes and only apply when all the available memory is committed to a single function.
 
 
    * Appointments: 32 characters/entry
 
    * Contacts: 16 characters/entry in the name field, 12 characters/entry in the number field
 
 
Maximum Data Per Entry:
 
 
 
    * Documents: 16 Kb
 
    * Outlines: 32Kb for an entire outline, 2Kb for each topic
 
    * Contacts/Data Files: 2 Kb for text data, 61.7Kb for graphics data
 
    * Others: 2Kb
 
 
Other Features:
 
Secret function, data transfer, keyword search, messages, etc.
 
 
Calculator:
 
 
 
    * Digits: 10
 
    * Functions: Addition, subtraction, multiplication, division, constant, square root, percent, memory calculation, date calculation, paperless printer.
 
 
Operating Environment:
 
32 deg. F to 104 deg. F (0 deg. C to 40 deg. C)
 
 
Weight:
 
10.88oz.
 
 
Size:
 
6.3" X 3.5" X 1"
 
 
Batteries:
 
2X AA (operating batteries) plus 1X CR-2032 (backup battery)
 
 
Battery Life:
 
Up to 100 hours
 
 
AC Adapter:
 
EA-23A  and CE-BK1 battery pack (both optional).
 
 
IR Send Distance:
 
 
 
    * 50 cm (20 inches) maximum at speeds of 9600 bps to 115 Kbps using IrDA-compatible protocol.
 
    * 50 cm (20 inches) maximum at speeds of 9600 bps to 115 Kbps using Sharp IR (ASK) protocol.
 
 
IR distance may change depending on the system used.
 
 
Serial Port:
 
15 pin; connect to a fax/modem or transfer data to your PC.
 
 
Infrared Port:
 
IrDA compatible Infrared Communications; connect to a PC, Macintosh, PC Printer, or another Zaurus or Wizard without wires or cables.
 
 
 
==== The board consists of ====
 
 
* '''CPU''' : Intel(r) Xscale(tm) PXA270 416Mhz [[Media:doc.pdf|doc.pdf]]
 
* '''RAM''' soldered 64MB SDRAM
 
* '''LAN''' USBETH 10/100Mbit/sec
 
* '''UART''' RS232
 
* '''FLASH''' 128MB Flash
 
* '''POWER''' system=3.3V, feeder={5V DC, ___}, ___ Watt
 
* '''System''' PCB ___ mm x ___ mm x ___ mm
 
* '''RTC''' the real time clock chip is provided by the cpu
 
 
 
 
* CPU_TYPE    PXA2
 
* SYSTEM_TYPE ZAURUS-C1000
 
 
=== Memory Locations ===
 
 
memory map of the board will be added as soon as possible
 
 
 
{| border="1" cellspacing="0" cellpadding="5" align="center"
 
! addr begin
 
! addr end
 
! area
 
|-
 
| ...
 
| ??
 
| ram, userspace
 
|-
 
| ....
 
| ??
 
| ram, userspace
 
|}
 
 
<pre>
 
#0x00008000 est reprsent par : 0x80 ror 24, cod par 0xC80 ;
 
does it means gnueabi-objdump -p vmlinux | sed -n 's/LOAD.*vaddr \([^ ]*\).*/\1/p'
 
0xc0008000
 
found the right address (0xA0008000)?
 
</pre>
 
 
Open questions
 
--------------
 
...
 
 
=== hw ===
 
 
==== uart ====
 
 
'''Sharp CE-170TS''' is a null modem serial cable for Zaurus. It seems to be actually the only available IOPORT serial cable working with the latest Zauruses. A bit expensive, but voltage does not conform RS-232 standard. It works nicely as a null modem with a standard PC, using a special null modem gender changer it works with a RS-232 hardware modem, but it does not work with mobile phone or GPS client cables.
 
 
You will find it (on amazon for example, $50) and it will be indicated "for sl-5500" ... well do not trust it: it will work for your c1000, too =P
 
 
 
==== antenna shields ====
 
 
by utx/Stanislav
 
 
http://www.oesf.org/forum/index.php?showforum=149
 
 
http://www.oesf.org/forum/index.php?showtopic=26261
 
 
=== Doc around ===
 
<pre>
 
KB
 
 
The Fn+LeftArrow / Fn+RightArrow key combination to switch between console
 
 
escape is the cancel key
 
 
atl is ??? one of the jappo key, dunno
 
</pre>
 
 
forum http://forum.soft32.com/linux/29-rc1-zaurus-spitz-ftopict475511.html
 
 
varia doc http://openzaurus.berlios.de/Main_Page
 
 
http://www.oesf.org/forum/index.php?showtopic=13238
 
 
http://carme.bfh.ch/downloads/Processor_Manuals/XSCALE/XSCALE_PXA27x_Family_Design_Guide_28000102.pdf
 
 
http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%B3%AB%C8%AF%A5%E1%A5%E2%2F%A5%CF%A1%BC%A5%C9%A5%A6%A5%A7%A5%A2%2FC700%A5%E1%A5%E2%A5%EA%C1%FD%C0%DF
 
 
http://www.iral.com/~albertr/linux/zaurus/wireless/
 
 
http://www.oesf.org/forum/index.php?showtopic=13562
 
 
http://www.rpsys.net/openzaurus/
 
 
http://linuxdevices.com/news/NS5128534085.html
 
 
http://www.penguin.cz/~utx/zaurus/
 
 
http://www.penguin.cz/~utx/zaurus/photos#ce-170ts
 
 
http://www.oesf.org/index.php?title=System
 
 
ftp://pda.gentoo.ru/projects/handhelds/zaurus-c1000/
 
 
http://stuvel.eu/zaurus
 
 
http://www.angstrom-distribution.org/c1000-install-instructions
 
 
http://www.angstrom-distribution.org/unstable/autobuild/akita/
 
 
http://www.angstrom-distribution.org/demo/kexecboot/
 
 
http://www.h5.dion.ne.jp/~rimemoon/zaurus/memo_003.htm
 
 
hw http://tdiedrich.de/Zaurus
 
 
uboot http://www.pdaxrom.org/?q=node/89
 
 
IRDA
 
 
http://www.oesf.org/forum/index.php?s=554c57276527ae8d0ad02a12001344b1&showtopic=25313&st=0&p=173339&#entry173339
 
 
<pre>
 
1) irda-utils
 
 
2) mknod /dev/ircomm0 c 161 0
 
 
3) ircomm
 
 
modprobe pxaficp_ir
 
modprobe ircomm
 
modprobe ircomm_tty
 
irattach irda0 -s
 
 
4) i modprobe irda too
 
 
</pre>
 
 
 
idea GPS
 
 
wiki.navit-project.org
 
 
 
 
USB
 
 
http://en.wikipedia.org/wiki/Universal_Serial_Bus#Types_of_USB_connector
 
 
http://en.wikipedia.org/wiki/USB_On-The-Go
 
 
 
 
 
 
<pre>
 
i like the idea here, but let me get a few things straight:
 
1. are you guys trying to use the sharp i/o port's USB port?
 
2. if not, is this possible?
 
What about stuart? In case you don;t need SIR.
 
 
C-860, kernel 2.4,  irda --> ttyS01
 
</pre>
 
 
I believe the scoop is a proprientary Sharp's ASIC, so the datasheet most probably never would be published or made public: it is an ASIC but by EPSON GA_SLA50000, that is a gate array and we probably will never know what sharp has putted into it. It is a pity.
 
 
<pre>
 
Any of BTUART pins can be used as usualy GPIO pins. This is so called alternate GPIO function and is described in intel's datasheet. So when BTUART is disabled all its pins are working as just any other GPIO pins. And BTUART is disabled by default in kernel source.
 
 
static void __init corgi_map_io(void)
 
{
 
pxa_map_io();
 
iotable_init(corgi_io_desc);
 
 
#if 0
 
/* This enables the BTUART */
 
CKEN |= CKEN7_BTUART;
 
set_GPIO_mode(GPIO42_BTRXD_MD);
 
set_GPIO_mode(GPIO43_BTTXD_MD);
 
set_GPIO_mode(GPIO44_BTCTS_MD);
 
set_GPIO_mode(GPIO45_BTRTS_MD);
 
#endif
 
 
/* setup sleep mode values */
 
PWER = 0x00000002;
 
PFER = 0x00000000;
 
PRER = 0x00000002;
 
PGSR0 = 0x0158C000;
 
PGSR1 = 0x00FF0080;
 
PGSR2 = 0x0001C004;
 
PCFR |= PCFR_OPDE;
 
}
 
</pre>
 
 
=== Problems ===
 
 
=== Images of the board ===
 
 
[[Image:akita-mobo.jpg]]
 
 
[[Image:akita.jpg]]
 
 
== hardware ==
 
 
Notes, these devices are connected to ioexp:
 
* IrDA on/off
 
* Backlight power on/off
 
* Highest bit of baclight intensity
 
* Pull-up voltage for remote on/off
 
* Microphone bias on/off
 
 
These devices use I2C:
 
* Akita IOEXP (PXA270 I2C bus)
 
* Maxim MAX7310 gpio expander
 
* Wolfson Microsystems WM8750 audio chip (PXA270 I2S bus)
 
 
you need to add WM8750 and MAX7310 chips (I2C slaves).
 
Wolfson Microsystems WM8750 audio chip and Maxim MAX7310 gpio expander chip are used in the Spitz.
 
 
 
Kernel <=2.6.27 have a bug: If audio initialization fails for any
 
reason, system crashes in suspend (device remains registered, but some
 
pointers are NULL). Later kernels fixed this problem. ... 2.6.30 is still pre commit
 
 
 
> umm, i need the IrDA, too ... but it seems the IrDA transreceiver is not
 
> enabled: it seems it needs a poweron/off made by the max7310 i2c port
 
>expander
 
 
Exactly: Irda is connected to one of three serial ports of PXA270, but
 
the transceiver is switched by the GPIO connected to the ioexp on akita
 
and to the spare pin of scoop2 (internal CF slot chip) on spitz.
 
 
 
 
=== Uart ===
 
 
[[Image:akita-uart.jpg|akita-uart]]
 
 
 
 
=== usb-ethernet ===
 
<pre>
 
(.) USB CATC NetMate-based Ethernet device support (EXPERIMENTAL)
 
(.) USB KLSI KL5USB101-based ethernet device support
 
(.) USB Pegasus/Pegasus-II based ethernet device support
 
(.) USB RTL8150 based ethernet device support (EXPERIMENTAL)
 
 
(.) Multi-purpose USB Networking Framework
 
(.) ASIX AX88xxx Based USB 2.0 Ethernet Adapters
 
        Aten UC210T
 
        ASIX AX88172
 
        Billionton Systems,USB2AR
 
        Buffalo LUA-U2-KTX
 
        Corega FEther USB2-TX
 
        D-Link DUB-E100
 
        Hawking UF200
 
        Linksys USB200M
 
        Netgear FA120
 
        Sitecom LN-029
 
        Intellinet USB 2.0 Ethernet
 
        ST Lab USB 2.0 Ethernet
 
        TrendNet TU2-ET100     
 
(.) CDC Ethernet support (smart devices such as cable modems)
 
(*) Davicom DM9601 based USB 1.1 10/100 ethernet devices
 
(.) GeneSys GL620USB-A based cables
 
(.) NetChip 1080 based cables (Laplink, ...)
 
(.) Prolific PL-2301/2302 based cables
 
(.) MosChip MCS7830 based Ethernet adapters
 
(.) Host for RNDIS and ActiveSync devices (EXPERIMENTAL)
 
(.) Simple USB Network Links (CDC Ethernet subset)
 
(.) Sharp Zaurus (stock ROMs) and compatible   
 
 
 
 
macbook-air MB442Z/A Apple USB Enternet Adapter
 
 
~ ASIX AX88xxx Based
 
 
AppleUSBEthernet Chipsets inside: AX88178, AX88772
 
 
Apple USB Enternet Adapter:
 
Version: 0.0.1
 
BUS Power(mA): 500
 
Speed: Up to 480 MB/sec
 
Manufacturer: Apple Inc.
 
Proudct ID: 0x1402
 
 
 
CONFIG_USB_NET_AX8817X  += asix.o
 
 
--- a/drivers/net/usb/asix.c
 
+++ b/drivers/net/usb/asix.c
 
@@ -1444,6 +1444,10 @@  static const struct usb_device_id produc
 
// Apple USB Ethernet Adapter
 
USB_DEVICE(0x05ac, 0x1402),
 
.driver_info = (unsigned long) &ax88772_info,
 
+}, {
 
+ // Cables-to-Go USB Ethernet Adapter
 
+ USB_DEVICE(0x0b95, 0x772a),
 
+ .driver_info = (unsigned long) &ax88772_info,
 
},
 
{ }, // END
 
};
 
</pre>
 
 
=== MMC/SD ===
 
 
 
 
==== Hack ====
 
 
PCB.
 
 
=== touchscreen ===
 
 
 
=== LCD ===
 
 
=== irda ===
 
 
emerge net-wireless/irda-utils
 
 
modprobe pxaficp_ir
 
 
mknod /dev/ircomm0 c 161 0
 
 
modprobe ircomm
 
 
modprobe ircomm_tty
 
 
irattach irda0 -s irattach /dev/ttySx
 
 
== uc-gentoo ==
 
 
stage3-mips3 big endian is currently running updated to 2008
 
 
CHOST="armv5te-softfloat-linux-gnueabi"
 
CFLAGS="-O2 -pipe -march=iwmmxt -mtune=iwmmxt -msoft-float"
 
 
=== A shot ===
 
 
@17-02-2009
 
root=/dev/hda3
 
 
==== stage3 ====
 
 
http://www.gtlib.gatech.edu/pub/gentoo/releases/arm/autobuilds/20090524/armv4tl-softfloat-linux-gnueabi/
 
 
==== reboot+dmesg: bootloader & kernel startup ====
 
 
<pre>
 
</pre>
 
 
 
 
=== About devtools ===
 
 
crossbuilder script made to build up what is needed
 
 
 
=== change chost ===
 
http://www.gentoo.org/doc/en/change-chost.xml
 
 
== gcc ==
 
 
{| border="1" cellspacing="0" cellpadding="5" align="center"
 
! sys-devel/gcc
 
! config
 
! issue
 
|-
 
| 4.1.2
 
| Using built-in specs.
 
Target: armv5te-softfloat-linux-gnueabi
 
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/armv5te-softfloat-linux-gnueabi/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/armv5te-softfloat-linux-gnueabi/4.1.2/include --datadir=/usr/share/gcc-data/armv5te-softfloat-linux-gnueabi/4.1.2 --mandir=/usr/share/gcc-data/armv5te-softfloat-linux-gnueabi/4.1.2/man --infodir=/usr/share/gcc-data/armv5te-softfloat-linux-gnueabi/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/armv5te-softfloat-linux-gnueabi/4.1.2/include/g++-v4 --host=armv5te-softfloat-linux-gnueabi --build=armv5te-softfloat-linux-gnueabi --disable-altivec --with-float=soft --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++ --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
 
Thread model: posix
 
gcc version 4.1.2 (Gentoo 4.1.2 p1.0.1)
 
 
| dunno
 
|-
 
| gcc-4.3.2-r4
 
| Using built-in specs.
 
Target: armv4tl-softfloat-linux-gnueabi
 
Configured with: /var/tmp/portage/sys-devel/gcc-4.3.2-r4/work/gcc-4.3.2/configure --prefix=/usr --bindir=/usr/armv4tl-softfloat-linux-gnueabi/gcc-bin/4.3.2 --includedir=/usr/lib/gcc/armv4tl-softfloat-linux-gnueabi/4.3.2/include --datadir=/usr/share/gcc-data/armv4tl-softfloat-linux-gnueabi/4.3.2 --mandir=/usr/share/gcc-data/armv4tl-softfloat-linux-gnueabi/4.3.2/man --infodir=/usr/share/gcc-data/armv4tl-softfloat-linux-gnueabi/4.3.2/info --with-gxx-include-dir=/usr/lib/gcc/armv4tl-softfloat-linux-gnueabi/4.3.2/include/g++-v4 --host=armv4tl-softfloat-linux-gnueabi --build=armv4tl-softfloat-linux-gnueabi --disable-altivec --disable-fixed-point --with-float=soft --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --disable-libgcj --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.3.2-r4 p1.7, pie-10.1.5'
 
Thread model: posix
 
gcc version 4.3.2 (Gentoo 4.3.2-r4 p1.7, pie-10.1.5)
 
| ./base/gdevmpla.c:284: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395
 
|}
 
 
== toolchain ==
 
 
using external toolchain http://labs.kernelconcepts.de/Tools/Toolchains/
 
 
 
 
== kernel status ==
 
 
=== report ===
 
{| border="1" cellspacing="0" cellpadding="5" align="center"
 
! kernel
 
! compiled with
 
! fb
 
! config fbcon=rotate:1 at the bootup
 
! suspend/resume
 
! irda
 
! uart
 
! sound
 
! net
 
! note
 
|-
 
| 2.6.22-z0
 
| gcc-4.0.1
 
| working
 
| working
 
| working
 
| not tested
 
| not tested
 
| not working
 
| usbdm9601 is working, hacked driver/net/usb/dm9600.c the driver cause of an issue
 
| assumed as working kernel
 
|-
 
| 2.6.23
 
| it requires gcc->=4.1.2
 
| working
 
| not working, 90 degree screen at the bootup
 
| working
 
| not tested
 
| not tested
 
| not working
 
| usbdm9601 is not working cause of the usb sense
 
| When I plug earphone, there is kernel panic for NULL pointer reference. After some
 
debugging, I find the sharpsl_rc driver will access spitz_pcmcia_scoop[1], but that is not initialized on Akita at all. So I think maybe we should disable sharpsl_rc on Akita until it is
 
fixed.
 
|-
 
| 2.6.24
 
| it requires gcc->=4.1.2
 
| working
 
| not working, 90 degree screen at the bootup
 
| working but system panic if "fn" + arrow is pressed on the wakeup
 
| not tested
 
| not tested
 
| not working
 
| usbdm9601 is not working cause of the usb sense
 
| -
 
|-
 
| 2.6.26
 
| it requires gcc->=4.1.2
 
| working
 
| not working, 90 degree screen at the bootup
 
| not working
 
| not tested
 
| not tested
 
| not working
 
| usbdm9601 is not working cause of the usb sense
 
| there is a problem with the battery recharge
 
|-
 
| 2.6.30
 
| gcc-4.3.2
 
| working, mode 320x240
 
| not working, 90 degree screen at the bootup
 
| Problems with resume. Pavel's patches from arm list fix resume at cost
 
of broken offline charging and broken serial port after resume
 
| not tested
 
| not tested
 
| working if kernel is compiled with gcc-4.3.2
 
| usbdm9601 is working
 
| there is a problem with the battery recharge, OTG is not yet implemented
 
|}
 
 
=== about dev 2.6.30 ===
 
 
<pre>
 
*** email, from Stanislav Brabec a me, Pavel ***
 
 
Hallo.
 
 
I just improved my script[1] to build both spitz and akita in parallel.
 
Configs and modules are available with the same name suffix.
 
 
http://www.penguin.cz/~utx/zaurus/feed/images/
 
 
I spent some time to provide a config file with recommended drivers for
 
all chips.
 
 
akita and spitz images are in sync, the only differences are kernel
 
command line and CONFIG_GPIO_PCA953X=y.
 
 
linux-2.6.30 works for me with known problems:
 
 
- Problems with resume. Pavel's patches from arm list fix resume at cost
 
of broken offline charging and broken serial port after resume.
 
 
- UDC does not work
 
 
- frame buffer mode 320x240
 
 
- OTG is not yet implemented
 
 
</pre>
 
 
=== kernel-build.sh ===
 
 
<pre>
 
[1] http://www.penguin.cz/~utx/zaurus/feed/tools/kernel-build.sh
 
 
#!/bin/bash
 
 
OE_BUILD_DIR=/OE/build/tmp
 
 
export PATH=$PATH:$OE_BUILD_DIR/cross/armv5te/bin
 
 
function make_kernel {
 
 
rm -rf INSTALL
 
mkdir -p INSTALL/boot
 
#make ARCH=arm CC=arm-angstrom-linux-gnueabi-gcc LD=arm-angstrom-linux-gnueabi-ld INSTALL_PATH=$PWD/INSTALL/boot INSTALL_MOD_PATH=$PWD/INSTALL -j8 oldconfig || exit
 
make ARCH=arm CC=arm-angstrom-linux-gnueabi-gcc LD=arm-angstrom-linux-gnueabi-ld INSTALL_PATH=$PWD/INSTALL/boot INSTALL_MOD_PATH=$PWD/INSTALL -j8 zImage || exit
 
make ARCH=arm CC=arm-angstrom-linux-gnueabi-gcc LD=arm-angstrom-linux-gnueabi-ld INSTALL_PATH=$PWD/INSTALL/boot INSTALL_MOD_PATH=$PWD/INSTALL -j8 || exit
 
make ARCH=arm CC=arm-angstrom-linux-gnueabi-gcc LD=arm-angstrom-linux-gnueabi-ld INSTALL_PATH=$PWD/INSTALL/boot INSTALL_MOD_PATH=$PWD/INSTALL -j8 install || exit
 
make ARCH=arm CC=arm-angstrom-linux-gnueabi-gcc LD=arm-angstrom-linux-gnueabi-ld INSTALL_PATH=$PWD/INSTALL/boot INSTALL_MOD_PATH=$PWD/INSTALL -j8 zinstall || exit
 
make ARCH=arm CC=arm-angstrom-linux-gnueabi-gcc LD=arm-angstrom-linux-gnueabi-ld INSTALL_PATH=$PWD/INSTALL/boot INSTALL_MOD_PATH=$PWD/INSTALL -j8 modules_install || exit
 
rm 2>/dev/null INSTALL/boot/*.old
 
cd INSTALL
 
cd boot
 
mkdir -p $OE_BUILD_DIR/deploy/glibc/images/$1
 
for KERNEL in vmlinuz* ; do
 
cp -a $KERNEL $OE_BUILD_DIR/deploy/glibc/images/$1/${KERNEL/vmlinuz/zImage}-$1.bin
 
done
 
cd ..
 
tar -zcf $OE_BUILD_DIR/deploy/glibc/images/$1/modules${KERNEL/vmlinuz}-$1.tgz lib
 
cp -a ../.config $OE_BUILD_DIR/deploy/glibc/images/$1/config${KERNEL/vmlinuz}-$1
 
tar -zcf ../../$1${KERNEL/vmlinuz}-bin.tar.gz *
 
cd ..
 
 
}
 
 
if test -z "$1" ; then
 
 
sed -i 's/CONFIG_GPIO_PCA953X=y/# CONFIG_GPIO_PCA953X is not set/;s@root=/dev/mtdblock2 rootfstype=jffs2@root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw@' .config
 
make_kernel spitz
 
sed -i 's/# CONFIG_GPIO_PCA953X is not set/CONFIG_GPIO_PCA953X=y/;s@root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw@root=/dev/mtdblock2 rootfstype=jffs2@' .config
 
make_kernel akita
 
#sed -i 's/CONFIG_GPIO_PCA953X=y/# CONFIG_GPIO_PCA953X is not set/;s@root=/dev/mtdblock2 rootfstype=jffs2@root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw@' .config
 
 
else
 
make ARCH=arm CC=arm-angstrom-linux-gnueabi-gcc LD=arm-angstrom-linux-gnueabi-ld INSTALL_PATH=$PWD/INSTALL/boot INSTALL_MOD_PATH=$PWD/INSTALL -j8 "$@"
 
fi
 
</pre>
 
 
== Setting the keyboard ==
 
 
=== loadkeys - load keyboard translation tables ===
 
<pre>
 
loadkeys [ -c --clearcompose ] [ -d --default ] [ -h --help ] [ -m --mktable ] [ -s --clearstrings ] [ -v --verbose ] [ filename... ]
 
 
 
DESCRIPTION
 
 
The program loadkeys reads the file or files specified by filename.... Its main purpose is to load the kernel keymap for the console. 
 
RESET TO DEFAULT
 
If the -d (or --default ) option is given, loadkeys loads a default keymap, probably the file defkeymap.map either in //lib/kbd/keymaps or in /usr/src/linux/drivers/char. (Probably the former was user-defined, while the latter is a qwerty keyboard map for PCs - maybe not what was desired.) Sometimes, with a strange keymap loaded (with the minus on some obscure unknown modifier combination) it is easier to type `loadkeys defkeymap'. 
 
LOAD KERNEL KEYMAP
 
The main function of loadkeys is to load or modify the keyboard driver's translation tables. When specifying the file names, standard input can be denoted by dash (-). If no file is specified, the data is read from the standard input.
 
 
For many countries and keyboard types appropriate keymaps are available already, and a command like `loadkeys uk' might do what you want. On the other hand, it is easy to construct one's own keymap. The user has to tell what symbols belong to each key. She can find the keycode for a key by use of showkey(1), while the keymap format is given in keymaps(5) and can also be seen from the output of dumpkeys(1). 
 
LOAD KERNEL ACCENT TABLE
 
If the input file does not contain any compose key definitions, the kernel accent table is left unchanged, unless the -c (or --clearcompose ) option is given, in which case the kernel accent table is emptied. If the input file does contain compose key definitions, then all old definitions are removed, and replaced by the specified new entries. The kernel accent table is a sequence of (by default 68) entries describing how dead diacritical signs and compose keys behave. For example, a line
 
 
    compose ',' 'c' to ccedilla
 
 
means that <ComposeKey><,><c> must be combined to <ccedilla>. The current content of this table can be see using `dumpkeys --compose-only'. 
 
LOAD KERNEL STRING TABLE
 
The option -s (or --clearstrings ) clears the kernel string table. If this option is not given, loadkeys will only add or replace strings, not remove them. (Thus, the option -s is required to reach a well-defined state.) The kernel string table is a sequence of strings with names like F31. One can make function key F5 (on an ordinary PC keyboard) produce the text `Hello!', and Shift+F5 `Goodbye!' using lines
 
 
    keycode 63 = F70 F71
 
    string F70 = "Hello!"
 
    string F71 = "Goodbye!"
 
 
in the keymap. The default bindings for the function keys are certain escape sequences mostly inspired by the VT100 terminal. 
 
CREATE KERNEL SOURCE TABLE
 
If the -m (or --mktable ) option is given loadkeys prints to the standard output a file that may be used as /usr/src/linux/drivers/char/defkeymap.c, specifying the default key bindings for a kernel (and does not modify the current keymap). 
 
OTHER OPTIONS
 
 
-h --help
 
    loadkeys prints its version number and a short usage message to the programs standard error output and exits.
 
 
 
WARNING
 
Note that anyone having read access to /dev/console can run loadkeys and thus change the keyboard layout, possibly making it unusable. Note that the keyboard translation table is common for all the virtual consoles, so any changes to the keyboard bindings affect all the virtual consoles simultaneously.
 
 
Note that because the changes affect all the virtual consoles, they also outlive your session. This means that even at the login prompt the key bindings may not be what the user expects. 
 
</pre>
 
 
=== keymaps - keyboard table descriptions for loadkeys and dumpkeys ===
 
<pre>
 
DESCRIPTION
 
 
These files are used by loadkeys(1) to modify the translation tables used by the kernel keyboard driver and generated by dumpkeys(1) from those translation tables.
 
 
The format of these files is vaguely similar to the one accepted by xmodmap(1). The file consists of charset or key or string definition lines interspersed with comments.
 
 
Comments are introduced with ! or # characters and continue to the end of the line. Anything following one of these characters on that line is ignored. Note that comments need not begin from column one as with xmodmap(1).
 
 
The syntax of keymap files is line oriented; a complete definition must fit on a single logical line. Logical lines can, however, be split into multiple physical lines by ending each subline with the backslash character (\). 
 
INCLUDE FILES
 
A keymap can include other keymaps using the syntax
 
 
    include "pathname"
 
 
 
CHARSET DEFINITIONS
 
A character set definition line is of the form:
 
 
    charset "iso-8859-x"
 
 
It defines how following keysyms are to be interpreted. For example, in iso-8859-1 the symbol mu (or micro) has code 0265, while in iso-8859-7 the letter mu has code 0354. 
 
COMPLETE KEYCODE DEFINITIONS
 
Each complete key definition line is of the form:
 
 
    keycode keynumber = keysym keysym keysym...
 
 
keynumber is the internal identification number of the key, roughly equivalent to the scan code of it. keynumber can be given in decimal, octal or hexadecimal notation. Octal is denoted by a leading zero and hexadecimal by the prefix 0x.
 
 
Each of the keysyms represent keyboard actions, of which up to 256 can be bound to a single key. The actions available include outputting character codes or character sequences, switching consoles or keymaps, booting the machine etc. (The complete list can be obtained from dumpkeys(1) by saying dumpkeys -l .)
 
 
Each keysym may be prefixed by a '+' (plus sign), in wich case this keysym is treated as a "letter" and therefore affected by the "CapsLock" the same way as by "Shift" (to be correct, the CapsLock inverts the Shift state). The ASCII letters ('a'-'z' and 'A'-'Z') are made CapsLock'able by default. If Shift+CapsLock should not produce a lower case symbol, put lines like
 
 
    keycode 30 = +a  A
 
 
in the map file.
 
 
Which of the actions bound to a given key is taken when it is pressed depends on what modifiers are in effect at that moment. The keyboard driver supports 8 modifiers. These modifiers are labeled (completely arbitrarily) Shift, AltGr, Control, Alt, ShiftL, ShiftR, CtrlL and CtrlR. Each of these modifiers has an associated weight of power of two according to the following table:
 
 
    modifier
 
        weight
 
    Shift
 
 
          1
 
    AltGr
 
 
          2
 
    Control
 
 
          4
 
    Alt
 
 
          8
 
    ShiftL
 
 
        16
 
    ShiftR
 
 
        32
 
    CtrlL
 
 
        64
 
    CtrlR
 
        128
 
 
The effective action of a key is found out by adding up the weights of all the modifiers in effect. By default, no modifiers are in effect, so action number zero, i.e. the one in the first column in a key definition line, is taken when the key is pressed or released. When e.g. Shift and Alt modifiers are in effect, action number nine (from the 10th column) is the effective one.
 
 
Changing the state of what modifiers are in effect can be achieved by binding appropriate key actions to desired keys. For example, binding the symbol Shift to a key sets the Shift modifier in effect when that key is pressed and cancels the effect of that modifier when the key is released. Binding AltGr_Lock to a key sets AltGr in effect when the key is pressed and cancels the effect when the key is pressed again. (By default Shift, AltGr, Control and Alt are bound to the keys that bear a similar label; AltGr may denote the right Alt key.)
 
 
Note that you should be very careful when binding the modifier keys, otherwise you can end up with an unusable keyboard mapping. If you for example define a key to have Control in its first column and leave the rest of the columns to be VoidSymbols, you're in trouble. This is because pressing the key puts Control modifier in effect and the following actions are looked up from the fifth column (see the table above). So, when you release the key, the action from the fifth column is taken. It has VoidSymbol in it, so nothing happens. This means that the Control modifier is still in effect, although you have released the key. Re-pressing and releasing the key has no effect. To avoid this, you should always define all the columns to have the same modifier symbol. There is a handy short-hand notation for this, see below.
 
 
keysyms can be given in decimal, octal, hexadecimal, unicode or symbolic notation. The numeric notations use the same format as with keynumber. Unicode notation is "U+" followed by four hexadecimal digits. The symbolic notation resembles that used by xmodmap(1). Notable differences are the number symbols. The numeric symbols '0', ..., '9' of xmodmap(1) are replaced with the corresponding words 'zero', 'one', ... 'nine' to avoid confusion with the numeric notation.
 
 
It should be noted that using numeric notation for the keysyms is highly unportable as the key action numbers may vary from one kernel version to another and the use of numeric notations is thus strongly discouraged. They are intended to be used only when you know there is a supported keyboard action in your kernel for which your current version of loadkeys(1) has no symbolic name.
 
 
There is a number of short-hand notations to add readability and reduce typing work and the probability of typing-errors.
 
 
First of all, you can give a map specification line, of the form
 
 
    keymaps 0-2,4-5,8,12
 
 
to indicate that the lines of the keymap will not specify all 256 columns, but only the indicated ones. (In the example: only the plain, Shift, AltGr, Control, Control+Shift, Alt and Control+Alt maps, that is, 7 columns instead of 256.) When no such line is given, the keymaps 0-M will be defined, where M+1 is the maximum number of entries found in any definition line.
 
 
Next, you can leave off any trailing VoidSymbol entries from a key definition line. VoidSymbol denotes a keyboard action which produces no output and has no other effects either. For example, to define key number 30 to output 'a' unshifted, 'A' when pressed with Shift and do nothing when pressed with AltGr or other modifiers, you can write
 
 
    keycode  30 = a A
 
 
instead of the more verbose
 
 
    keycode  30 = a A      VoidSymbol      VoidSymbol \
 
                    VoidSymbol VoidSymbol VoidSymbol ...
 
 
For added convenience, you can usually get off with still more terse definitions. If you enter a key definition line with only and exactly one action code after the equals sign, it has a special meaning. If the code (numeric or symbolic) is not an ASCII letter, it means the code is implicitly replicated through all columns being defined. If, on the other hand, the action code is an ASCII character in the range 'a', ..., 'z' or 'A', ..., 'Z' in the ASCII collating sequence, the following definitions are made for the different modifier combinations, provided these are actually being defined. (The table lists the two possible cases: either the single action code is a lower case letter, denoted by 'x' or an upper case letter, denoted by 'Y'.)
 
 
    modifier
 
        symbol
 
    none
 
        x                      Y
 
    Shift
 
        X                      y
 
    AltGr
 
        x                      Y
 
    Shift+AltGr
 
        X                      y
 
    Control
 
        Control_x              Control_y
 
    Shift+Control
 
        Control_x              Control_y
 
    AltGr+Control
 
        Control_x              Control_y
 
    Shift+AltGr+Control
 
        Control_x              Control_y
 
    Alt
 
        Meta_x        Meta_Y
 
    Shift+Alt
 
        Meta_X        Meta_y
 
    AltGr+Alt
 
        Meta_x        Meta_Y
 
    Shift+AltGr+Alt
 
        Meta_X        Meta_y
 
    Control+Alt
 
        Meta_Control_x Meta_Control_y
 
    Shift+Control+Alt
 
        Meta_Control_x Meta_Control_y
 
    AltGr+Control+Alt
 
        Meta_Control_x Meta_Control_y
 
    Shift+AltGr+Control+Alt
 
        Meta_Control_x Meta_Control_y
 
 
 
SINGLE MODIFIER DEFINITIONS
 
All the previous forms of key definition lines always define all the M+1 possible modifier combinations being defined, whether the line actually contains that many action codes or not. There is, however, a variation of the definition syntax for defining only single actions to a particular modifier combination of a key. This is especially useful, if you load a keymap which doesn't match your needs in only some modifier combinations, like AltGr+function keys. You can then make a small local file redefining only those modifier combinations and loading it after the main file. The syntax of this form is:
 
 
{ plain | <modifier sequence> } keycode keynumber = keysym
 
 
, e.g.,
 
 
    plain keycode 14 = BackSpace
 
    control alt keycode 83 = Boot
 
    alt keycode 105 = Decr_Console
 
    alt keycode 106 = Incr_Console
 
 
Using "plain" will define only the base entry of a key (i.e. the one with no modifiers in effect) without affecting the bindings of other modifier combinations of that key. 
 
STRING DEFINITIONS
 
In addition to comments and key definition lines, a keymap can contain string definitions. These are used to define what each function key action code sends. The syntax of string definitions is:
 
 
    string keysym = text
 
 
text can contain literal characters, octal character codes in the format of backslash followed by up to three octal digits, and the three escape sequences \n, \\, and \", for newline, backslash and quote, respectively. 
 
COMPOSE DEFINITIONS
 
Then there may also be compose definitions. They have syntax
 
 
    compose 'char' 'char' to 'char'
 
 
and describe how two bytes are combined to form a third one (when a dead accent or compose key is used). This is used to get accented letters and the like on a standard keyboard. 
 
ABBREVIATIONS
 
Various abbreviations can be used with kbd-0.96 and later.
 
 
strings as usual
 
    Defines the usual values of the strings (but not the keys they are bound to).
 
compose as usual for "iso-8859-1"
 
    Defines the usual compose combinations.
 
 
To find out what keysyms there are available for use in keymaps, use the command
 
 
    dumpkeys --long-info
 
 
Unfortunately, there is currently no description of what each symbol does. It has to be guessed from the name or figured out from the kernel sources.
 
 
 
EXAMPLES
 
(Be careful to use a keymaps line, like the first line of `dumpkeys`, or "keymaps 0-15" or so.)
 
 
The following entry exchanges the left Control key and the Caps Lock key on the keyboard:
 
 
    keycode  58 = Control
 
    keycode  29 = Caps_Lock
 
 
Key number 58 is normally the Caps Lock key, and key number 29 is normally the Control key.
 
 
The following entry sets the Shift and Caps Lock keys to behave more nicely, like in older typewriters. That is, pressing Caps Lock key once or more sets the keyboard in CapsLock state and pressing either of the Shift keys releases it.
 
 
    keycode  42 = Uncaps_Shift
 
    keycode  54 = Uncaps_Shift
 
    keycode  58 = Caps_On
 
 
The following entry sets the layout of the edit pad in the enhanced keyboard to be more like that in the VT200 series terminals:
 
 
    keycode 102 = Insert
 
    keycode 104 = Remove
 
    keycode 107 = Prior
 
    shift keycode 107 = Scroll_Backward
 
    keycode 110 = Find
 
    keycode 111 = Select
 
    control alt  keycode 111 = Boot
 
    control altgr keycode 111 = Boot
 
 
Here's an example to bind the string "du\ndf\n" to the key AltGr-D. We use the "spare" action code F100 not normally bound to any key.
 
 
    altgr keycode 32 = F100
 
    string F100 = "du\ndf\n"
 
 
 
</pre>
 
 
=== showkey showkey - examine the codes sent by the keyboard  ===
 
 
<pre>
 
showkey [-h|--help] [-a|--ascii] [-s|--scancodes] [-k|--keycodes] 
 
 
DESCRIPTION
 
 
showkey prints to standard output either the scan codes or the keycode or the `ascii' code of each key pressed. In the first two modes the program runs until 10 seconds have elapsed since the last key press or release event, or until it receives a suitable signal, like SIGTERM, from another process. In `ascii' mode the program terminates when the user types ^D.
 
 
When in scancode dump mode, showkey prints in hexadecimal format each byte received from the keyboard to the standard output. A new line is printed when an interval of about 0.1 seconds occurs between the bytes received, or when the internal receive buffer fills up. This can be used to determine roughly, what byte sequences the keyboard sends at once on a given key press. The scan code dumping mode is primarily intended for debugging the keyboard driver or other low level interfaces. As such it shouldn't be of much interest to the regular end-user. However, some modern keyboards have keys or buttons that produce scancodes to which the kernel does not associate a keycode, and, after finding out what these are, the user can assign keycodes with setkeycodes(8).
 
 
When in the default keycode dump mode, showkey prints to the standard output the keycode number or each key pressed or released. The kind of the event, press or release, is also reported. Keycodes are numbers assigned by the kernel to each individual physical key. Every key has always only one associated keycode number, whether the keyboard sends single or multiple scan codes when pressing it. Using showkey in this mode, you can find out what numbers to use in your personalized keymap files.
 
 
When in `ascii' dump mode, showkey prints to the standard output the decimal, octal, and hexadecimal value(s) of the key pressed, according to he present keymap. 
 
OPTIONS
 
 
-h --help
 
    showkey prints to the standard error output its version number, a compile option and a short usage message, then exits.
 
-s --scancodes
 
    Starts showkey in scan code dump mode.
 
-k --keycodes
 
    Starts showkey in keycode dump mode. This is the default, when no command line options are present.
 
-a --ascii
 
    Starts showkey in `ascii' dump mode.
 
</pre>
 
 
 
== bridging ==
 
 
This describes how to give network access to Zaurus via ethernet bridging with a PC running Gentoo. This allows a USB-connected Zaurus to appear as another host on the same network as the PC. Bridging is useful only if you can allocate an IP address for the Zaurus that is on the same network as the PC (e.g. you are connected to a private network). Bridging is not appropriate if your PC is connected directly to the internet (via a cable/adsl/modem) and thus has a public IP address, in this case see this howto.
 
 
=== Prerequisites for Gentoo host machine ===
 
 
  1. Bridging is supported in the current 2.4 and 2.6 kernels. If you configure your own, you need CONFIG_BRIDGE together with whatever kernel options are necessary to get usbnet working with your Zaurus, for a SL-5500 (collie) these are CONFIG_USB_USBNET and CONFIG_USB_NET_ZAURUS. I compiled all these as modules and they get loaded automatically when required.
 
  2. baselayout-1.11.11 or later
 
  3. The brctl command is provided by the bridge-utils package:
 
 
emerge -n net-misc/bridge-utils
 
 
=== Configuring the Gentoo machine ===
 
 
The interface with the Zaurus, usb0, will be combined with eth0 in a virtual interface called br0, this is what will be assigned the IP configuration for the PC.
 
 
First you need to tell the Gentoo RC system about usb0 and br0 (I'll assume eth0 is already configured). This is done by creating symbolic links from net.lo to net.usb0 and net.br0 in /etc/init.d.
 
 
cd /etc/init.d
 
ln -s net.lo net.usb0
 
ln -s net.lo net.br0
 
 
Next you tell Gentoo how to configure the interfaces. This is done in /etc/conf.d/net. With baselayout-1.11.x, this should contain:
 
 
# Add eth0 to the bridge.  usb0 will be added by hotplug when it comes up.
 
bridge_br0="eth0"
 
 
# Make sure eth0 gets configured before the bridge.
 
depend_br0() {
 
  need net.eth0
 
}
 
 
# Ensure that eth0 and usb0 don't get configured by DHCP
 
# The only interface needing IP configuration is br0
 
config_eth0=( "null" )
 
config_usb0=( "null" )
 
 
# Give the bridge an IP configuration, either static:
 
config_br0=( "192.168.2.10/24" )
 
gateway="br0/192.168.2.1"
 
# or by DHCP:
 
# config_br0=( "dhcp" )
 
# This is the address by which the Gentoo machine will be known on the network
 
 
# When you plug in the Zaurus, hotplug creates the usb0 interface and
 
# issues a network hotplug event which causes Gentoo to configure the
 
# interface.  This function causes it to be added to the bridge:
 
postup() {
 
      local iface=${1}
 
      if [ ${iface} == usb0 ]; then
 
              brctl addif br0 ${iface}
 
      elif [ ${iface} == br0 ] && ifconfig -a | grep usb0 > /dev/null ; then
 
              # if usb0 is already present when br0 is configured (i.e. the
 
              # Zaurus was plugged in and switched on when the PC was booted
 
              # then add it to the bridge.
 
              brctl addif br0 usb0
 
      fi
 
}
 
 
With baselayout-1.12 and later this simplifies to:
 
 
# Add port to bridge br0
 
bridge_br0="eth0"
 
 
# dynamically add usb0 when the interface comes up
 
bridge_add_usb0="br0"
 
 
# Configure the ports to null values so dhcp does not get started
 
config_eth0=( "null" )
 
config_usb0=( "null" )
 
 
# Give the bridge an address - dhcp
 
config_br0=( "dhcp" ) # or e.g. ( "192.168.2.0/24" ) for static config
 
 
# make sure eth0 is up before configuring br0
 
depend_br0() {
 
        need net.eth0
 
}
 
 
Obviously change the IP addresses to suit.
 
 
=== Configuring the Zaurus ===
 
 
Use the Network settings GUI to configure usbd0. Either use DHCP, or a static config on the same subnet as the PC, e.g.:
 
 
Automatically bring up
 
IP Address = 192.168.2.50
 
Subnet Mask = 255.255.255.0
 
Gateway = 192.168.2.1      (same as the PC)
 
First DNS = 192.168.2.10  (same as the PC)
 
Second DNS = 192.168.2.1  (same as the PC)
 
 
=== Test the configuration ===
 
 
On the Gentoo box:
 
 
/etc/init.d/net.eth0 pause
 
/etc/init.d/net.br0 start
 
 
Then plug in and switch on the PDA and check that both the PC and the PDA have network access.
 
 
=== Make the configuration permanent ===
 
 
On the Gentoo box:
 
 
rc-update del net.eth0
 
rc-update add net.br0 default
 
 
=== Troubleshooting ===
 
 
I found that the MTU assigned to usbd0 on the Zaurus was diferent from that assigned to usb0 on the PC:
 
 
gentoo # ifconfig usb0
 
usb0    Link encap:Ethernet  HWaddr 66:5E:F2:2A:07:79
 
        UP BROADCAST RUNNING MULTICAST  MTU:1494  Metric:1
 
        RX packets:198 errors:0 dropped:0 overruns:0 frame:0
 
        TX packets:3368 errors:0 dropped:0 overruns:0 carrier:0
 
        collisions:0 txqueuelen:1000
 
        RX bytes:20256 (19.7 Kb)  TX bytes:349616 (341.4 Kb)
 
 
collie # ifconfig usbd0
 
usbd0  Link encap:Ethernet  HWaddr 40:00:01:00:00:01
 
        inet addr:192.168.2.50  Bcast:192.168.2.255  Mask:255.255.255.0
 
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
        RX packets:3459 errors:2 dropped:2 overruns:0 frame:2
 
        TX packets:251 errors:0 dropped:0 overruns:0 carrier:0
 
        collisions:0 txqueuelen:100
 
 
This does not prevent logging into the Zaurus using ssh but does prevent downloading files larger than about 1kB. I am not sure why this happens, it may be related to this kernel bug report
 
 
The solution is to reduce the MTU on the Zaurus end. You can configure the Zaurus to do this automatically by editing /etc/network/interfaces. Find the section starting 'iface usbd0' and add the following line:
 
 
up ifconfig usbd0 mtu 1494
 
 
 
 
=== references ===
 
 
ethernet bridging http://www.linuxfoundation.org/en/Net:Bridge
 
 
usbnet Driver Framework http://www.linux-usb.org/usbnet/
 
 
Gentoo Network Configuration http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4
 

Latest revision as of 10:20, 8 January 2021