TableOfContents(3)

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.:

Things to test

What follows is an illustration of the testing procedure, with results from an iPAQ h5000 class device.

  1. Boot process
  2. USB Client (DONE)
  3. USB Host (DONE)
  4. SD cards
  5. Display (Almost done)
  6. Buttons (DONE)
  7. Touchscreen (DONE)
  8. Suspend and Resume (almost DONE - formatting needed)
  9. Battery control (NO IDEA HOW TO TEST IT)
  10. APM status
  11. Back light
  12. GUI launching
  13. Sound (ALMOST DONE)
  14. Flash memory
  15. Serial
  16. IrDA (DONE)
  17. LEDs
  18. Bootloader
  19. iPAQ sleeve
  20. Bluetooth (DONE)
  21. WiFi

  22. 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

  1. Hook up the USB cable to the iPAQ.
  2. Connect it to the host PC
  3. 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:

  1. 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)

  2. Follow from the previous test
  3. 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.

  1. Check if the current kernel configuration supports USB host functionality

    root@embedded:~$ gzip -dc /proc/config.gz | grep -v "#" | grep USB
    ...
    CONFIG_USB=m
    ...
  2. 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
    ...
  3. 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
  4. Load proper module for usb controller

    root@embedded:~$ modprobe ohci-hcd
  5. 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
  6. 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:

  1. Is is possible to see the boot messages ?
  2. Does the Angstrom init screen show up (SCREENSHOT IS NEEDED HERE) ?
  3. 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:

Some devices have other extra keys, like :

This is the proffered terminology - if one fills a bug report or writes to mailing list - please use this one.

  1. 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
  2. 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 :

  1. Does the device react on touchscreen being pressed?
  2. Is it possible to pass the screen calibration procedure?
  3. 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

  1. Check if is possible to put the device in sleep mode

    echo mem > /sys/power/state
  2. Answer following questions:
  3. Did the device go to sleep ?
  4. Is the display blanked ?
  5. Is the console inactive ?
  6. Is the device listed by USB on the host PC?

Resume

  1. Press the power button.
  2. Answer following questions:
  3. Was there any reaction on power on signal?
  4. Is the device listed by USB on the host PC?
  5. Did the device show any symptoms of going back form suspend ?
  6. 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

  1. 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
  2. Check if the sound card is correctly detected

    root@embedded:~$ cat /proc/asound/cards
     0 [h5000          ]: AK4535 - h5000
                         h5000 (AK4535)
  3. Check if the alsamixer has correct settings:

    root@embedded:~$ alsamixer
  4. Test the sound on the device, by playing some mp3:
  5. Install some mp3 player (I recommend a simple and small package mpg123 - WHERE TO GET ONE FROM - there is none in Angstrom feed???? GRRRRRRR!!!!!)
  6. Copy some mp3 to the device
  7. Play the mp3 with the player
  8. Listen to the loudspeaker if it plays the sound
  9. 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

  1. Load the proper modules

    root@embedded:~$ modprobe pxaficp_ir
  2. 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.
  3. Check if irda is correctly initized

    root@embedded:~$ cat /proc/sys/net/irda/discovery
    1
  4. 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
  5. 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

  1. Find the correct /dev/ entry where the bluetooth is hooked up
  2. Try turning the bluetooth using that device (in this case ttyS1)

    root@embedded:~$ /sbin/hciattach  /dev/ttyS1 any 921600
  3. 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:0
  4. Check 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       A780
  5. Check 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

  1. Turn on the Wifi
  2. 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:

  1. Change to instructions ("type xxx in the console and check...", "find correct file and ...", "turn the ir on the cellphone and put it nearby..." )
  2. Clear the text from the unnecessary information - leave the procedures....
  3. Add missing tests - check with the "Things to test" list....
  4. If needed/spotted add things to the list
  5. Check if the procedures are ok and if it really verifies the state. Mark checked ones....
  6. 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

UniversalTestProcedure (last edited 2008-02-27 01:16:34 by MichalPanczyk)