Handhelds.org - Open source for handheld devices

UserPreferences

HpIpaqH6315


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) (./) / NA 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 (./) / Part.
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 [WWW]http://fuzzyneural.net/h63xx (previously [WWW]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 at [WWW]http://www.pilppa.org/h6300 You may eventually find more details at http://www.handhelds.org/hypermail/h6300-port/2/index.html#261

You 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 [WWW]TSC2101 audio codec. The CLKS pin has a 12MHz oscillator connected to it.

MCBSP2

This is connected to the SPI interface on the [WWW]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 [WWW]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)

The identified software version for h6340 (You can use "AT+CGMR" command)

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

  1. Turn on the phone in WinCE (This is required since we are not yet able to power on the GSM module from Linux)

  2. Make sure that you have 8250 serial module either build in to Linux Kernel or you modprobe it.

  3. Boot to Linux

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

  5. Change the serial port settings in minicom: 115200, 8N1,hardware flow control: yes, software flow control: no

  6. Edit "Modem and dialing" settings. Remove "initstring, reset string. I have also removed just in case the dialing suffix strings"

  7. Turn the local echo on (You can press CTRL-A + Z + E in minicom to toggle local echo on/off)

  8. Go to terminal and enter command "AT" and press enter --> You should see some garpage as a response.

  9. Turn the multiplexer off: AT+WMUX=0 (After this minicom is not showing anymore garbage in the screen)

  10. Now you are able to enter one of the really rich set of AT commands. Here some examples.

  11. Check pin status: "AT+CPIN?"

  12. Check speaker and microphone index currently selected for use: "AT+SPEAKER?"

  13. Change the microphone and speaker used to be index 1: "AT+SPEAKER=1"

  14. 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 [WWW]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

Userspace gomunicator apps would need help for implementing following kind of features

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

  1. modprobe diskonchip

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

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: