Introduction: Scope and Purpose
This page is an outline of a procedure for checking hardware support in Ångström for linux-handhelds kernel powered devices. It may be useful for testing other devices too.
We give suggestions for how to test different components. It is up to the tester to make sure it is used in proper way - i.e.:
after initial boot (i.e. "out of the box")
- after some time of usage
longer time with combination of things turned on and off (e.g. IR, bluetooth, wifi, ...)
- hibernation test (do things work OK after coming back from hibernation?)
Things to test
What follows is an illustration of the testing procedure, with results from an iPAQ h5000 class device.
- Boot process
- USB Client (DONE)
- USB Host (DONE)
- SD cards
- Display (Almost done)
- Buttons (DONE)
- Touchscreen (DONE)
- Suspend and Resume (almost DONE - formatting needed)
- Battery control (NO IDEA HOW TO TEST IT)
- APM status
- Back light
- GUI launching
- Sound (ALMOST DONE)
- Flash memory
- Serial
- IrDA (DONE)
- LEDs
- Bootloader
- iPAQ sleeve
- Bluetooth (DONE)
- Fingerprint scanner
How to test
We assume that you have already installed an Ångström image and can log as root from a serial console or the device itself. Now you want to see what works, and what doesn't. And, of course, you want to check whether what doesn't work is already reported in the bugtracker and if not, write a good quality bug report
Boot process
Does the image boot all the way to the login prompt? If not, where does it stop? File a bug report.
USB client
- Hook up the USB cable to the iPAQ.
- Connect it to the host PC
- Check whether it appears on the USB
root@PC:~$ lsusb Bus 002 Device 005: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
Different test: USB networking:
Make sure if you have networking set up properly (check the [http://www.linuxtogo.org/gowiki/AngstromManual#head-aea271e9bbab192eed1007c5d2fa31f77a093d85 Network Setup] section of the [http://www.linuxtogo.org/gowiki/AngstromManual Ångström Manual] for USB networking instructions)
- Follow from the previous test
- Ping the iPAQ from the PC
root@PC:~$ ping 192.168.0.202 PING 192.168.0.202 (192.168.0.202) 56(84) bytes of data. 64 bytes from 192.168.0.202: icmp_seq=1 ttl=64 time=3.48 ms 64 bytes from 192.168.0.202: icmp_seq=2 ttl=64 time=1.94 ms 64 bytes from 192.168.0.202: icmp_seq=3 ttl=64 time=3.48 ms
USB host
NOTE: Not every device is USB host capable. Most of them don't support this functionality.
Check if the current kernel configuration supports USB host functionality
root@embedded:~$ gzip -dc /proc/config.gz | grep -v "#" | grep USB ... CONFIG_USB=m ...
Find if the proper module for usb controller is in the kernel (lets assume ohci-hcd - other possiblity is uhci-hcd)
root@embedded:~$gzip -dc /proc/config.gz | grep OHCI .... CONFIG_USB_OHCI_HCD=m ...
Make sure it is installed (or install it)
root@embedded:~$ ipkg list-installed | grep ohci kernel-module-ohci-hcd - 2.6.21-hh20-r6 - ohci-hcd kernel module; 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
Load proper module for usb controller
root@embedded:~$ modprobe ohci-hcd
Check in the log if it showed up ok.
root@embedded:~$ tail -f /var/log/messages Jan 2 13:05:23 h5000 user.info kernel: [132400.900000] usbcore: registered new interface driver hub Jan 2 13:05:23 h5000 user.info kernel: [132400.910000] usbcore: registered new device driver usb Jan 2 13:05:23 h5000 user.debug kernel: [132400.940000] ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver Jan 2 13:05:23 h5000 user.info kernel: [132400.950000] dmabounce:registered device samcop usb host on platform bus Jan 2 13:05:23 h5000 user.info kernel: [132401.210000] samcop usb host samcop usb host: h5400 OHCI Jan 2 13:05:23 h5000 user.info kernel: [132401.220000] samcop usb host samcop usb host: new USB bus registered, assigned bus number 1 Jan 2 13:05:23 h5000 user.info kernel: [132401.220000] samcop usb host samcop usb host: irq 125, io mem 0x14020000 Jan 2 13:05:23 h5000 user.info kernel: [132401.300000] usb usb1: configuration #1 chosen from 1 choice Jan 2 13:05:23 h5000 user.info kernel: [132401.300000] hub 1-0:1.0: USB hub found Jan 2 13:05:23 h5000 user.info kernel: [132401.310000] hub 1-0:1.0: 2 ports detected
Check if there is something on the USB bus
root@embedded:~$ lsusb Bus 1 Device 1: ID 0000:0000
SD Cards
FIXME: Placeholder
Display
Testing display is based on users observations. Following questions need to be answered:
- Is is possible to see the boot messages ?
- Does the Angstrom init screen show up (SCREENSHOT IS NEEDED HERE) ?
- Are there any other symptoms of display working ?
Buttons
This test is based on [3]. Note: There are some standard set of keys that have their universal names:
- Power button
- Joypad (that has capabilities to read events like pressing it to different directions(up down ... preferably called: N,S,E,W and their combination plus the "action" - just pressing the button)
- Calendar button
- Contacts button
- Mail button
- Homepage button
Some devices have other extra keys, like :
- Volume up
- Volume down
- Record button
- and other....
This is the proffered terminology - if one fills a bug report or writes to mailing list - please use this one.
Find input devices that showed up to the system in /dev directory
root@embedded:~$ ls -l /dev/input/ crw-rw---- 1 root root 13, 64 Jan 1 00:18 event0 crw-rw---- 1 root root 13, 65 Jan 1 00:18 event1 lrwxrwxrwx 1 root root 6 Jan 1 00:18 touchscreen0 -> event1
Test each input device (event0,1,2... or input0,1,2...) to find which groups of keys are supported. Just check what happens when hardware keys are pressed at each device:
root@embedded:~$ cat /dev/input/event0 | hexdump 0000000 0c39 0002 ec8e 000e 0001 0074 0001 0000 0000010 0c39 0002 ec9e 000e 0000 0000 0000 0000 0000020 0c3a 0002 79cc 0003 0001 0074 0002 0000 0000030 0c3a 0002 79de 0003 0000 0000 0000 0000 0000040 0c3a 0002 1685 0004 0001 0074 0002 0000 0000050 0c3a 0002 1694 0004 0000 0000 0000 0000 0000060 0c3a 0002 16a8 0004 0001 0074 0000 0000 0000070 0c3a 0002 1730 0004 0000 0000 0000 0000
Touchscreen
The procedure is similar to keys test procedure. Just find which file is responsible for touchscreen.
root@embedded:~$ cat /dev/input/touchscreen0 | hexdump
Note: Touchscreen is probably unimportant in case of console-images, but is very important in GUI images. The best way to test one is answer following questions :
- Does the device react on touchscreen being pressed?
- Is it possible to pass the screen calibration procedure?
- Is is possible to draw a nice signature on the screen of device similar to the one that you use in real life ?
Suspend and Resume
Suspend
Check if is possible to put the device in sleep mode
echo mem > /sys/power/state
- Answer following questions:
- Did the device go to sleep ?
- Is the display blanked ?
- Is the console inactive ?
- Is the device listed by USB on the host PC?
Resume
- Press the power button.
- Answer following questions:
- Was there any reaction on power on signal?
- Is the device listed by USB on the host PC?
- Did the device show any symptoms of going back form suspend ?
- Is possible to type anything to the console ?
Battery control
NO IDEA HOT TO TEST IT
APM status
apm is silent. But there is some info about apm:
root@embedded:~$ cat /proc/apm v1.13 1.2 0x02 0xff 0xff 0xff -1% -1 ?
Backlight
I can see when it turns on and off - pressing the power button activates it.
GUI Launching
FIXME: Placeholder
Sound
Check if there proper alsa modules are loaded for the device (also - find which modules are proper for that device.... CREATING A LIST OF MODULES FOR DEVICES IS WORTH THINKING ABOUT... )
root@embedded:~$ lsmod
Check if the sound card is correctly detected
root@embedded:~$ cat /proc/asound/cards 0 [h5000 ]: AK4535 - h5000 h5000 (AK4535)Check if the alsamixer has correct settings:
root@embedded:~$ alsamixer
- Test the sound on the device, by playing some mp3:
- Install some mp3 player (I recommend a simple and small package mpg123 - WHERE TO GET ONE FROM - there is none in Angstrom feed???? GRRRRRRR!!!!!)
- Copy some mp3 to the device
- Play the mp3 with the player
- Listen to the loudspeaker if it plays the sound
- Hook up headphones and try listening over the headphones
Flash memory
I didn't test the additional partition but I could start the system from the flash and use it for storing files.
Serial Console
I can login on serial console with no problems.
IrDA
Load the proper modules
root@embedded:~$ modprobe pxaficp_ir
Launch the idra device
root@embedded:~$ irattach irda0 -s
or
root@embedded:~$ irattach /dev/ttyS2 -s
where ttyS2 is tty where to irda is hooked up.Check if irda is correctly initized
root@embedded:~$ cat /proc/sys/net/irda/discovery 1
Turn on the other IRda device on the other side and check if it is discovered:
root@embedded:~$ cat /proc/net/irda/discovery IrLMP: Discovery log: nickname: Nokia 6610i, hint: 0xb125, saddr: 0xc4c70f5c, daddr: 0x0000fc92
Check, by using irdaping, if comunication is possible between the devices:
root@embedded:~$ irdaping 0x0000fc92 IrDA ping (0x0000fc92 on irda0): 32 bytes 32 bytes from 0x0000fc92: irda_seq=0 time=105.00 ms. 32 bytes from 0x0000fc92: irda_seq=1 time=103.82 ms. 32 bytes from 0x0000fc92: irda_seq=3 time=103.72 ms.
LEDs
LED driver is there, LED files are present in /sys, but I managed to turn on only one LED - blue LED (on slightly modified image). After turning on bluetooth the LED is on and stays on forever - even when I turn off bluetooth. It does not blink.
root@embedded:~$ ls -l /sys/class/leds/ drwxr-xr-x 2 root root 0 Jan 2 17:10 h5400:blue drwxr-xr-x 2 root root 0 Jan 1 00:00 h5400:green-left drwxr-xr-x 2 root root 0 Jan 1 00:00 h5400:green-right drwxr-xr-x 2 root root 0 Jan 1 00:00 h5400:red-left drwxr-xr-x 2 root root 0 Jan 1 00:00 h5400:red-right
Bootloader
FIXME: Placeholder
iPAQ sleeve
Not tested - not selected in defconfig.
If someone really wants me to test one I can do it, but didn't see the reason while there are more important things to finish here.
Bluetooth
- Find the correct /dev/ entry where the bluetooth is hooked up
Try turning the bluetooth using that device (in this case ttyS1)
root@embedded:~$ /sbin/hciattach /dev/ttyS1 any 921600
Check if hci0 got reported correctly (check if BD Address consists of non-zero values)
root@embedded:~$ hciconfig hci0: Type: UART BD Address: 08:00:17:13:46:A3 ACL MTU: 339:4 SCO MTU: 60:9 UP RUNNING PSCAN ISCAN RX bytes:686 acl:0 sco:0 events:20 errors:0 TX bytes:353 acl:0 sco:0 commands:20 errors:0Check if it is possible to find nearby bluetooth devices (that are in discoverable mode)
root@embedded:~$ hcitool sca Scanning ... 00:14:9A:96:FC:1B A780Check if the communication between the devices is possible
root@h5000:~$ l2ping 00:14:9A:96:FC:1B Ping: 00:14:9A:96:FC:1B from 08:00:17:13:46:A3 (data size 44) ... 0 bytes from 00:14:9A:96:FC:1B id 0 time 45.46ms 0 bytes from 00:14:9A:96:FC:1B id 1 time 54.09ms 0 bytes from 00:14:9A:96:FC:1B id 2 time 34.07ms
WiFi
- Turn on the Wifi
- what does typical wifi command say :
iwlist sca , etc ....
..
Fingerprint Scanner
No notes yet. This is just a placeholder section.
TODO
This page is a work in progress. Here's what we are thinking of doing next:
- Change to instructions ("type xxx in the console and check...", "find correct file and ...", "turn the ir on the cellphone and put it nearby..." )
- Clear the text from the unnecessary information - leave the procedures....
- Add missing tests - check with the "Things to test" list....
- If needed/spotted add things to the list
- Check if the procedures are ok and if it really verifies the state. Mark checked ones....
- Make the page more general - not only h5000 (also - remove h5000 form the bash quotes - put something else @ipaq @pocket_pc @embedded maybe ? To differ the host from the ipaq put @x86 or @PC when quoting PC command line .... )
Conclusion
We hope you've found this page useful. Please edit it to keep it up to date as things change.
Notes
[1] http://www.angstrom-distribution.org/unstable/autobuild/h5000/
[2] http://handhelds.org/moin/moin.cgi/HpIpaqH5000
[3] http://pdalinux-tests.svn.sourceforge.net/viewvc/*checkout*/pdalinux-tests/trunk/testcases.html