Palm Treo 650 Hardware
Home | Status | Hardware | Downloads | How-To | Bootloader
Photos
-
Check out the screenshots
here
Specifications
-
General Device Specification
-
CPU
-
Intel XScale PXA270
-
http://www.intel.com/design/embeddedpca/applicationsprocessors/302302.htm
-
XScale manuals are downloadable from
Gumstix
-
ROM
-
32mb M-Systems DiskOnChip P3
-
Product brief (PDF)
-
RAM
-
32mb Samsung K4S56163LF SDRAM
-
Datasheet (PDF)
-
Display
-
320x320
-
Sony ACX533AKM
-
HTC part no. 60H00027-00
-
AC97 Touchscreen / Audio codec
-
WM9712
-
Datasheet (PDF)
-
Bluetooth
-
Broadcom BCM2035
-
Datasheet (PDF)
-
ASIC6
-
HTC-30H80049-00
-
Controls LEDs, backlight, fourth serial port, other stuff?
-
Registers mapped at 8000000
-
GSM phone module
-
Present only in the GSM version of the Treo 650.
-
Communicated with via ttyS0 FFUART baud 460800.
-
Broadcom BCM2132 EDGE/GPRS/GSM Baseband Processor
-
Product brief (PDF)
-
AT commands partially documented by a
Sony Ericcson PC card manual (PDF)
-
See also:
EDGE_EE54_AT_Commands_Rev_C.pdf (PDF)
-
Infineon PMB6258 EDGE RF Transceiver
-
Product brief (PDF)
-
Spansion 71PL032JA 32Mbit Flash + 8Mbit SRAM
-
Datasheet (PDF)
-
Power Management
-
MAXIM MAX1587A I2C power management
-
Datasheet (PDF)
-
MAXIM MAX1874E USB/AC Li+ battery charger
-
Datasheet (PDF)
-
DS2761 battery monitor (believed to be located in battery)
-
Datasheet (PDF)
-
Camera
-
Uses I2C and PXA's Quick Capture Interface
-
SD/SDIO/MMC
-
Uses CPU's controller
-
USB
-
Uses CPU's controller
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
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:
-
Direction: In - input, Out - output, In/Out - bidirectional
-
State: pin level, GPLR
-
AFR (Alternate Function Number): 0-3, GAFR
-
Interrupt (status): Rising Edge (RE), Falling Edge (FE)
-
Function - description
HTC Bootloader
You can access the bootloader via USB from a Linux host computer with this
patch. To enter bootloader mode, hold down the hotsync button on the USB cable and reset the treo.
From
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