HP iPAQ h63XX Linux Porting
h6300 | news | pictures | howtos | people
The iPAQ h63XX range has 3 different models, each sold in a different location. The one sold in the USA is the iPAQ 6315, the model sold in Europe is the iPAQ h6340 and the model sold in the Asia is the h6365. The H63XX series consists of a TI OMAP1510 CPU running at 168 MHz, SDRAM, DiskOnChip flash, GSM/GPRS, Wifi and Bluetooth. In addition the model sold in the USA contains a camera.
If you use this port, PLEASE add your name to the people page!
Driver Status
The status of various drivers is documented below;Hardware support status code: B-
| Component | Status | Comments | |||
| Boot process (all ticks required for D status) | |||||
| Boot process |
|
||||
| Boot-critical hardware (all ticks required for C status) | |||||
| Basic hardware |
|
||||
| USB to host |
|
||||
| SD-MMC/PCMCIA(CF) |
|
One cannot take the card out and reinsert it. | |||
| Display |
|
||||
| Basic PDA hardware/use (all ticks required for B status) | |||||
| Buttons |
|
||||
| Touchscreen |
|
||||
| Suspend/Resume |
|
||||
| Battery control |
|
||||
| APM status |
|
We get the battery status by sending a unique AT command | |||
| Backlight | WIP | ||||
| GUI launching - GPE/OPIE |
|
||||
| Advanced PDA hardware/use (all ticks required for A status) | |||||
| Sound |
|
||||
| Flash memory | Part. | We can read and write, but INTFL is not supported yet | |||
| Serial | NA | ||||
| IrDA |
|
||||
| LEDs | | ||||
| Bootloader | NA | ||||
| Full hardware support (all ticks required for A+ status) | |||||
| Bluetooth |
|
||||
| WiFi | Part. | There is a basic driver available, HOWEVER it does NOT work, it picks up the device successfully, but nothing else works yet | |||
| Camera/Video | | ||||
| GSM-module |
|
||||
Legend:
- full support, - doesn't work, WIP - work just started, Part. - partial support, more work needed., NA - Not applicable
For up-to-date development information visit
http://fuzzyneural.net/h63xx (previously
http://fuzzyneural.net/default/projects/h63xx)
See also the list at : http://handhelds.org/mailman/listinfo/h6300-port
Booting linux
See the Installation Guide or look atYou may find a archive backup at : http://www.blendo.de/index.php?id=18
Connecting your new ipaq to the internet
See the USB Guide or the Bluetooth Guide or the GPRS Guide
MMC/SD Cards Tested
Following MMC and SD cards has been tested either to work or fail for loading Linux in h63xx. (2.6.16 kernel)
Information from the Tested SD Cards
| Model | Status |
| Transcend 80x 256 MB | yes |
| SanDisk 256 MB | yes |
| Kingston Elite Pro 512 MB | yes |
| TransFlash 512 MB in SD Adapter | yes |
| SanDisk 512 MB SD | yes : 50 M fat + 950 M ext2 : boots and works allright |
| Centon 1.0 GB SD | yes |
| Apace 1.0 GB SD | yes |
| Dane-Elec 1.0 GB SD | yes / not working with 50 M fat + 950 M ext2 : would not find initrd : MMC errors reported |
| PhotoFast Super SD 2.0 GB | no |
| A-DATA Speedy SD 2.0 GB | no |
Information from the Tested MMC Cards
| Model | Status |
| SanDisk 256 MB (RC-MMC) | yes |
| Kingston MMC Mobile 1.0GB (code 2034584) | yes |
CPU Peripheral Connections
MCBSP1
This is connected to the
TSC2101 audio codec. The CLKS pin has a 12MHz oscillator connected to it.
-
We have written omap alsa driver that communicates with the tsc2101 over this interface. Speaker, headphone and gsm phone calls are now supported with this driver.
MCBSP2
This is connected to the SPI interface on the
ATMEGA8535 microcontroller. The Cradle UART connects to the microcontroller. The microcontroller also controls the LEDs.
MCSI1
MCSI1 is connected to the Bluetooth PCM audio interface.
MCSI2
MCSI2 is unused.
UART1 (Bluetooth)
The Bluetooth module UART HCI interface connects to the CPU via UART1. We have been able to get bluetooth working with 115200 speed, see the Bluetooth Guide for information on setting it up.
Bluetooth audio (Bluetooth SCO) has yet to be tested. The required tools can get be here
Bluetooth ALSA project
UART2 (GSM module)
The GSM/GPRS modem/AT interface (GSM Module) connects to the CPU via UART2. The h63XX series uses GSM modules from Wavecom.
SMS message send and receive works with a application called Gomunicator. With this application, we are able to make and receive phone calls, with full voice support.
GPRS functionality for data connections also works, see the GPRS HowTo on setting it up.
By default the GSM module communicates over UART2 in multiplexing mode so that the AT commands and data itself can both use UART2. However, it is planned to make the h63XX GSM driver handle multiplexing. The plan is to offer two virtual TTY ports (/dev/gsm0 and /dev/gsm0data) one coding/decoding 0xAA frames and the other one coding/decoding 0xDD frames. /dev/gsm0 will be used for AT commands and the data channel /dev/gsm0data will be used for enabling GRPS data transfer with PPP.
Before the GSM driver can offer the virtual ports that handle multiplexing you can use tools like minicom to play with the GSM module. For that you need to turn the multiplexing mode off. This can be done with command AT+WMUX=0 (and back on with WMUX=1).
The identified hardware version for h6340 (You can use "AT+CGMM" command)
-
MULTIBAND 900E 1800
The identified software version for h6340 (You can use "AT+CGMR" command)
-
541b09gg.P5186E 1365240 062204 15:17
(Software version 541b09gg, Wismo Pac] P5186 GSM/GPRS module, release date 22:nd of June, 2004)
The serial interface works in 115200 8N1 mode, hardware flowcontrol on, software flowcontrol off. You can test this in a following way:
-
Turn on the phone in WinCE (This is required since we are not yet able to power on the GSM module from Linux)
-
Make sure that you have 8250 serial module either build in to Linux Kernel or you modprobe it.
-
Boot to Linux
-
Open minicom in Linux in a way that it does not send modeminit commands.
minicom -s /dev/ttyS1
(GSM module is available in the /dev/ttyS1 aka UART2) -
Change the serial port settings in minicom: 115200, 8N1,hardware flow control: yes, software flow control: no
-
Edit "Modem and dialing" settings. Remove "initstring, reset string. I have also removed just in case the dialing suffix strings"
-
Turn the local echo on (You can press CTRL-A + Z + E in minicom to toggle local echo on/off)
-
Go to terminal and enter command "AT" and press enter --> You should see some garpage as a response.
-
Turn the multiplexer off: AT+WMUX=0 (After this minicom is not showing anymore garbage in the screen)
-
Now you are able to enter one of the really rich set of AT commands. Here some examples.
-
Check pin status: "AT+CPIN?"
-
Check speaker and microphone index currently selected for use: "AT+SPEAKER?"
-
Change the microphone and speaker used to be index 1: "AT+SPEAKER=1"
-
Make voice call: "atdt +11223344;"
Incoming calls are indicated through RING RING We are able to establish incoming and outgoing calls, with full audio.
Collin has made a userspace daemon called mplexd, that can be used for testing the multiplexing handling. This daemon provides two unix sockets in /var/run that the application should use. The multiplexer will then route the commands to UART. It is available for download
mplexd It could propably be used as a help when writing TTY based driver for h6300.
We have made some small changes to Gomunicator sources that are available in the CVS and are now actually able to communicate between the GSM module and Gomunicator. It is possible to use Gomunicator for starting phone calls. In addition Gomunicator is able detect incoming calls. But for really supporting voice calls we need to get the ALSA driver working. More info from Gomunicator is available at http://handhelds.org/moin/moin.cgi/Gomunicator
Todo list for the GSM driver under drivers/telephone/omap directory
-
Find out how to turn the GSM module on in Linux (Currently needs to be turned on in Wince before booting)
-
Add multiplexing support (/dev/gsm0 and /dev/gsm0data)
-
Possibility of handling the speaker and mic (part of ALSA driver, see audio codes documentation link below)
Userspace gomunicator apps would need help for implementing following kind of features
-
Possibility to turn the GSM module driver (and thus also the module) on and off (Pin code request)
-
Display name and phone number from the received SMS messages
-
Integrate with the contact list application (work started)
UART3
IrDA connects to the CPU via UART3.
MMC
The MMC/SD/SDIO connector is wired to the CPU's MMC module.
uWIRE/MCBSP3
The SPI control interface for the audio codec connects to the CPU's uWIRE/MCBSP3 module.
USB
The CPU's USB peripheral controller connects to the cradle USB pins.
Flash Interface
Connects to DiskOnChip Flash,
| N_CS0 | MDOC G2G3 Flash |
| N_CS1 | WLAN Module |
| N_CS2 | nc ?? |
| N_CS3 | card edge connector for external debug ethernet |
CS0 is connected to DiskOnChip Millennium Plus 64MiB, to test the driver you will need to
-
modprobe diskonchip
-
cat /proc/mtd
you then see list of partitions
Camera Interface
Interfaces to camera chip.
Keypad Controller
| col0 | col1 | col2 | col3 | |
| row0 | VOL_UP | NAV_UL | AP1 | |
| row1 | VOL_DN | NAV_DL | End | |
| row2 | NAV_CT | Capture | Record | |
| row3 | NAV_DR | Send | Power | |
| row4 | NAV_UR | AP4 |
h63XX keyboard support is added to /drivers/input/keyboard/omap-keypad.c. It supports now following keys.
| button_name | keycode send from kernel | keycode received to X |
| address book | 67 (= key_f9) | 75 |
| phone | 68 (= key_f10) | 76 |
| phone off | 87 (= key_f11) | 95 |
| 88 (= key_f12) | 96 | |
| select (joypad center) | 28 | 28 |
| joypad_key_up | 103 | 111 |
| joypad_key_right | 106 | 114 |
| joypad_key_down | 108 | 116 |
| joypad_key_left | 105 | 113 |
| volume up | 115 | 122 |
| volume down | 114 | 123 |
| record | 167 | 8 |
Mapping of keys to X/GPE is done in following files:
-
/etc/X11/h6300.xmodmap
-
/etc/X11/Xinit.d/12keymap
-
/etc/gpe/key-layout
-
/etc/gpe/key-commands
GPIO Connections
| GPIO0 | N_MDOC_LOCK | output | |
| GPIO1 | GPRS_DSR | input | What is this ? |
| GPIO2 | N_CODEC_IRQ | input | |
| GPIO3 | BT_PWR_EN | output | |
| GPIO4 | GPRS_DTRS | output | What is this ? |
| GPIO5 | MMC_DAT1 | input | why is this also connected here? |
| GPIO7 | IRDA_RC1 | output | what is this? |
| GPIO8 | N_SPI_CSR | output | SPI chip select for audio codec |
| GPIO9 | N_BT_RST | output | |
| GPIO10 | ?? | ?? | |
| GPIO11 | N_WLAN_IRQ | input | |
| GPIO12 | N_MP_IRQ | input | What is this ? |
| GPIO13 | MMC_WP | input | |
| GPIO14 | N_MP_RST | output | reset connection to microcontroller |
| GPIO15 | N_MMC_CD | input |
ARMIO
ARMIO pins are more ofter referred to MPUIO pins in TI documents.
| ARMIO1 | GPRS_RI | input | What is this ? |
| ARMIO2 | N_PWR_SW | input | irqs from power button presses |
| ARMIO3 | USB_DETECT_IN | input | |
| ARMIO4 | N_MP_IRQ | input | |
| ARMIO5 | LOW_PWR | output | What is this ? |
I2C
The CPU I2C module connects to an PCA9535 register for 16 more GPIO:
| IO00 | LCD_3v_EN | output | |
| IO01 | LCD_5V_EN | output | |
| IO02 | LCD_RST | output | |
| IO03 | LCD_DRV_EN | output | |
| IO04 | N_CAM_PWR_EN | output | |
| IO05 | MMC_PWR_EN | output | |
| IO06 | WLAN_PWR_EN | output | |
| IO07 | VIB_EN | output | |
| IO10 | MIC_OP_EN | output | |
| IO11 | SPK_OP_PD | output | |
| IO12 | N_WLAN_RST | output | |
| IO13 | IRDA_SD | output | |
| IO14 | 12M_OUT | output | connects to 12M_OUT signal on CPU? |
| IO15 | N_RBB | output | What is this ? |
| IO16 | GPRS_RESET | output | What is this ? |
| IO17 | GPRS_RFS | output | What is this ? |
Connector Pinouts
Cradle Connector
| CP1 | DC Jack | 5V input |
| CP2 | DC Jack | 5V input |
| CP3 | DC Jack | 5V input |
| CP4 | DC Jack | 5V input |
| CP5 | nc | |
| CP6 | nc | |
| CP7 | UART RXD | input |
| CP8 | UART TXD | output |
| CP9 | nc | |
| CP10 | GND | |
| CP12 | UART RTS | |
| CP13 | UART CTS | |
| CP14 | nc | |
| CP15 | GND | |
| CP16 | NC | |
| CP17 | USB 5V | |
| CP18 | NC | |
| CP19 | USB D+ | |
| CP20 | NC | |
| CP21 | USB D- | |
| CP22 | GND |
Identified Hardware
The following hardware has been positively identified:
-
TI
OMAP 1510 Processor
-
TSC2101 audio codec and touchscreen controller
-
Atmel
ATMEGA8535 EEPROM
-
Intercel Wavecom
Wismo Pac P5186 GSM/GPRS module (AT commands and other stuff
FAQs) (
Detailed Doc about Wavecom modem stuff full AT commandset for the device, very useful)
-
Dallas-Maxim
MAX2822 802.11b transceiver