Handhelds.org - Open source for handheld devices

UserPreferences

PalmTreo650Hardware


Palm Treo 650 Hardware

Home | Status | Hardware | Downloads | How-To | Bootloader

Photos

Specifications

GSM module

The GSM module is connected to the FFUART, audio codec and several GPIOs. On reset it speaks regular AT commands at baud 460800. It responds ERROR to almost everything until it is put into a high power state with AT+CFUN=1. Once in that state the module will put itself to sleep after being idle for 30 seconds, to make it up you must toggle the GSM WAKE (57) GPIO.

Undocumented commands

These commands aren't documented in the [WWW]GC7x/GC8x command reference. The full (?) list of commands can be found with AT* or AT+CLAC.

AT*MBSEL band selection

AT*MBSEL=? *MBSEL: (0-6)

See: GreenphoneBandSelection::setBand

AT*MCAM call monitoring info

AT*MCAM=? *MCAM: (0,1)

See: GreenphoneCallProvider::mcamNotification

AT*MCSQ unsolicited call quality

AT*MCSQ=0 AT*MCSQ=1

See: GreenphoneModemService::reset

AT*MECNS echo cancellation and noise suppression

AT*MECNS=? *MECNS: (1-10),(0-32767),(0-32767),(0-32767),(0-32767),(0-32767),(0-32767),(0-32767)

See: GreenphoneModemService::setNoiseSuppression

AT*MKEYTONE play DTMS to local speaker

AT*MKEYTONE=? *MKEYTONE: (0-9, "*","#"), (0-500)

See: AT+VTS command which transmits the tone, but doesn't play locally

AT*MTZ timezone notification

AT*MTZ=? *MTZ: (1-3),(0-1) AT*MTZ? *MTZ: 3

See: GreenphoneModemService::mtz2Notification

AT*MVCHN select voice channel

AT*MVCHN? *MVCHN: 1

AT*MVCHN=? *MVCHN: (0,1)

See: GreenphoneModemService::setOutput

AT*MVERS extra modem firmware version info

See: GreenphoneConfiguration::request

AT*MVMSC voice mail service numbers

AT*MVMSC=? *MVMSC: (1-5),(0-1),(?),(128,129,145)

See: GreenphoneServiceNumbers::setServiceNumber

Keypad matrix

All the buttons except silent switch and reset button are connected to the PXA270's matrix keypad controller.

The Treo uses MKOUT0-MKOUT3

Pin MKOUT0 MKOUT1 MKOUT2 MKOUT3
MKIN0
MKIN1
MKIN2
MKIN3 SPACE

Palm OS MMU configuration

Unlike other Palms the Treo has the TTB at 0xa1ffc000, this is mapped 1-1 but as a read-only page.

Virtual Physical
08000000-08000000 08000000-08000000
20000000-20d00000 a0000000-a0d00000
64000000-64400000 a1a00000-a1e00000
73100000-73b00000 a0f00000-a1900000
90000000-91800000 40000000-41800000
94000000-94000000 44000000-44000000
98000000-98000000 48000000-48000000
9c000000-9c000000 4c000000-4c000000
a0000000-a0000000 50000000-50000000
a8000000-a8000000 58000000-58000000
f0000000-f0000000 5c000000-5c000000
fef00000-fef00000 00000000-00000000

(Table is incomplete.)

LCD configuration

As set by PalmOS. The LCD registers are mapped to put value here by Linux.

Register Value Meaning
LCCR0 0x06000081
LCCR1 0x13070d3f
LCCR2 0x0768013d LPP=317 VSW=0 EFW=208 BFW=14
LCCR3 0x04700005
FDADR0 0xa1f8f300

Backlight is controlled by PXA's PWM0.

UARTs

FFUART GSM module 460800 baud (confirmed)
STUART irda?
BTUART multiconnector?
ASIC UART BT module (confirmed)

ASIC 6 (HTC-30H80049-00)

B0000000: 00 00 00 00 01 00 00 00 - 00 00 60 00 B0 00 00 00 | ..........`.....
B0000010: 40 00 E0 00 00 00 0F 00 - 0F 00 0F 00 00 00 00 00 | @...............
B0000020: 07 00 01 00 00 00 0E 00 - 00 00 00 00 0F 00 00 00 | ................
B0000030: 08 00 01 00 02 00 02 00 - 00 00 00 00 00 00 00 00 | ................
B0000040: FF 00 1F 00 FA 00 1F 00 - 80 00 1F 00 00 00 00 00 | ................
B0000050: 00 00 00 00 00 00 00 00 - FF 00 1F 00 00 00 00 00 | ................
B0000060: 00 00 00 00 00 00 00 00 - 00 00 80 00 1F 00 00 00 | ................
B0000070: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................
B0000080: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................
B0000090: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................
B00000A0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................
B00000B0: 08 00 00 00 0E 00 02 00 - 00 00 00 00 00 00 00 00 | ................
B00000C0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................
B00000D0: 18 00 01 00 0F 00 00 00 - 00 00 00 00 00 00 00 00 | ................
B00000E0: 48 00 54 00 43 00 2D 00 - 33 00 30 00 48 00 38 00 | H.T.C.-.3.0.H.8.
B00000F0: 30 00 30 00 34 00 39 00 - 2D 00 30 00 30 00 00 00 | 0.0.4.9.-.0.0...
Name Offset Comment
UART_THR_RBR_DLL 0x0
UART_IER_DM 0x2
UART_IIR_FCR 0x4
UART_LCR 0x6
UART_MCR 0x8
UART_LSR 0xa
UART_MSR 0xc
?? 0x10 should be 0x80 to enable green LED flashing (GPIO AF? DIR?), 0x40 no flashing
?? 0x12 should be 0xe1 to enable red LED flashing (GPIO AF? DIR?), e2 for keypad, 0xe0 no flashing
?? 0x16 should be 0x6 to enable LEDs, flashing speeds up when value is lowered. Some clock control?
?? 0x36 bit 3 = USB_DETECT_N
?? 0x44 (GPIO related ?)
gpio output level? 0x48 2,3 = also BT related? bit 4,5 = BT reset/power (which is which?), bit 6 = GSM power
?? 0x64 (GPIO related ?)
?? 0x66 bits: 0=LED0 1=LED1 2=LED2 3=PXA's PWM0??
?? 0x6a (read-only) GPIO input levels? (same GPIO bits as 0x48)
LED0_TimeBase 0x80 bits: 0-3=LED_TBS 4=LED_EN 5=LED_AUTOSTOP 6=LED_ALWAYS
?? 0x82 value=0
LED0_PeriodTime 0x84
?? 0x86 value=3
LED0_DutyTime 0x88
LED0_AutoStopCount 0x8a If autostop_en is set, LED will flash this many times then deactivate
LED1_TimeBase 0x90 bits: 0-3=LED_TBS 4=LED_EN 5=LED_AUTOSTOP 6=LED_ALWAYS
LED1_PeriodTime 0x94
LED1_DutyTime 0x98
LED1_AutoStopCount 0x9a If autostop_en is set, LED will flash this many times then deactivate
LED2_TimeBase 0xa0 bits: 0-3=LED_TBS 4=LED_EN 5=LED_AUTOSTOP 6=LED_ALWAYS
LED2_PeriodTime 0xa4
LED2_DutyTime 0xa8
LED2_AutoStopCount 0xaa If autostop_en is set, LED will flash this many times then deactivate

GPIO configuration

GPIO# Direction State AFR Interrupt Function
GPIO# Direction State AFR Interrupt Function
0 In 1 0 External power (AC adapter) connected
1 In 1 0 Reset button
2 Out 1 0 SYS_EN (reserved)
3 Out 1 0
4 Out 1 0 PWR_SDA
5 Out 1 0 PWR_CAP 0 (reserved)
6 Out 1 0 PWR_CAP 1 (reserved)
7 Out 1 0 PWR_CAP 2 (reserved)
8 Out 1 0 PWR_CAP 3 (reserved)
9 In 0 0
10 Out 1 0
11 In 0 0 RE GSM host wake (?)
12 In 0 0
13 In 1 0
14 In 0 2 RE Bluetooth (?) (ASIC6?)
15 In 1 3 RE FE
16 Out 1 2 PWM0
17 In 1 2 CIF_DD<6>
18 In 0 1 RDY
19 Out 1 0
20 Out 1 0 LCD power
21 In 0 0 RE FE Bluetooth int (?)
22 In 0 0
23 Out 0 0 SD power
24 Out 1 0 ASIC clock? (keypad backlight starts blinking slowly when low)
25 Out 0 0
26 Out 1 0 Vibrate
27 Out 0 0
28 In 0 1 BITCLK_AC97
29 In 0 1 SDATA_In_AC97
30 Out 0 2 SDATA_Out_AC97
31 Out 0 2 SYNC_AC97
32 Out 0 2 MMCCLK
33 In 0 0 Silent switch
34 In 1 1 FFRXD
35 In 1 1 FFCTS
36 In 1 0
37 Out 1 0
38 In 0 0
39 Out 1 2 FFTXD
40 Out 1 0
41 Out 1 2 FFRTS
42 In 1 0
43 Out 1 0
44 Out 1 0 When 1 the GSM won't turn on. Have to set to 0 and then toggle GPIO 87 or ASIC GPIO 6
45 Out 0 0
46 In 1 0
47 In 0 0
48 In 1 1 CIF_DD<5>
49 Out 0 2 nPWE
50 In 1 1 DD_CIF<3>
51 In 1 1 DD_CIF<2>
52 In 1 1 DD_CIF<4>
53 Out 1 2 nPCE_2
54 Out 1 0
55 In 1 1 DD_CIF<1>
56 Out 1 0
57 Out 0 0 GSM wake (when 0 allows BP to sleep)
58 Out 1 2 LDD_0
59 Out 0 2 LDD_1
60 Out 0 2 LDD_2
61 Out 1 2 LDD_3
62 Out 1 2 LDD_4
63 Out 0 2 LDD_5
64 Out 1 2 LDD_6
65 Out 1 2 LDD_7
66 Out 0 2 LDD_8
67 Out 0 2 LDD_9
68 Out 1 2 LDD_10
69 Out 0 2 LDD_11
70 Out 0 2 LDD_12
71 Out 1 2 LDD_13
72 Out 1 2 LDD_14
73 Out 0 2 LDD_15
74 Out 1 2 LCD_FCLK
75 Out 1 2 LCD_LCLK
76 Out 0 2 LCD_PCLK
77 Out 1 0 switching this GPIO causes LCD fade out
78 Out 0 2 nCS_2
79 Out 0 0
80 In 1 0
81 In 1 2 DD_CIF<0>
82 Out 0 0
83 Out 1 0
84 In 1 3 CIF_FV
85 In 1 3 CIF_LV
86 Out 1 0 LCD and backlight power
87 Out 1 0 Another GSM power (see also ASIC6 gpio 6)
88 Out 0 0
89 Out 1 1 AC97_SYSCLK
90 In 0 0
91 In 0 1 KP_MKIN<6>
92 Out 0 1 MMCDAT0
93 In 0 1 KP_MKIN<0>
94 In 1 0 battery_detect_n
95 Out 0 1 AC97_RESET_n
96 Out 1 3 KP_MKOUT<6>
97 In 0 3 KP_MKIN<3>
98 In 1 3 KP_MKIN<4>
99 In 1 3 KP_MKIN<5>
100 In 0 1 KP_MKIN<0>
101 In 0 1 KP_MKIN<1>
102 In 0 1 KP_MKIN<2>
103 Out 1 2 KP_MKOUT<0>
104 Out 1 2 KP_MKOUT<1>
105 Out 1 2 KP_MKOUT<2>
106 Out 0 2 KP_MKOUT<3>
107 Out 0 2 KP_MKOUT<4>
108 Out 1 2 KP_MKOUT<5>
109 Out 0 1 MMCDAT1
110 Out 0 1 MMCCS1
111 Out 0 1 MMCDAT3
112 Out 0 1 MMCCMD
113 In 1 0 RE FE SD_DETECT
114 Out 1 0 USB Power?
115 Out 0 0
116 Out 0 0 Back speaker power
117 Out 1 1 I2CSCL
118 Out 1 1 I2CSDA
119 In 0 0

Legend:

HTC Bootloader

You can access the bootloader via USB from a Linux host computer with this [WWW]patch. To enter bootloader mode, hold down the hotsync button on the USB cable and reset the treo.

From [WWW]shadowmite.com:

pmsys =0xA171A808
HTC Sausalito Bootloader Version : BOOTLOAD V0.24 Built on Apr 14 2005 at 15: Copyright (c) 2003 High Tech Computer Corporation
++Check BT Router
>>? Available monitor commands are: ? [command]
h [command]
mb [StartAddr [Count [Filler]]] --- Display/Set memory
mh [StartAddr [Count [Filler]]] --- Display/Set memory
mw [StartAddr [Count [Filler]]] --- Display/Set memory
l [pathname] --- Start a BIN file download via MTTY
lr [pathname] --- Same as above, but run it when complete
tftp --- Start a BIN file download via tFtp
flashtest --- This appears to try writing to every byte of memory, it will kill a phone!
jump [addr] --- Jump to a memory address
touch --- Touch Screen Test
touchssp --- Touch SSPx panel test??
idle --- Put the CPU into idle state
sense --- Put the CPU into sense state
standby --- Put the CPU into standby state
sleep --- Put the CPU into sleep state
deepsleep --- Put the CPU into deepsleep state
fcs [CLKCFG] --- Alter the CPU freq.
keytest --- Keypad test
pi2ctest --- Power I2C bus tests
debug
flashtype 0 (or 1)
rdoc 0(IPL)/1(SPL)/2(XIPKERNEL)/3(BINFS)
os
upload [addr] [size] --- Upload memory to terminal - writes binary to your connection!
pwr [0:normal; 1:idle; 2:standby; 3:sleep; 5:sense;
wpdoc [0/1] KEY
usb --- USB debug mode enable
led [1:LED1; 2:LED2; 3:LED3 ]
r2sd [command]
sd2r
rtask [Type[Value]]
rroute
rtest
rimgdata
jmptoos
pwm
audio
btrouter
vibratortest
audiogsm
audiocdma
dsdoc 1 or 0
gsm460
hwt
gsmdl 

Hidden commands:

ruu
gettoken
settoken