2012年5月28日月曜日

HBoot Analysis

For the complete list of my articles on Android devices and software, including analysis of devices and system firmware, lists of external resources and tools, and How-To instructions, check the front page of this wiki under the Android heading

As part of my investigation into methods for replacing the HTC Linux kernel and Android system via a firmware update I am noting interesting information here.

The aim of this analysis is to eventually be able create a GPL-ed boot-loader that will remove reliance on the HTC hboot and can be extended freely by others.

Current Status

9th November: Moved the instructions for establishing a remote serial terminal connection to the radio to the Radio Analysis page.

8th November: Added summary explanation of rtask D in the rtask list. Added information on FastBoot mode commands for a host PC to query the device when in "FASTBOOT USB" mode.

7th November: Finally pinned down the exact command to unlock security (S-ON/S-OFF) via the @secu_flag. I can query it successfully. I'm holding off attempting to use it until I fully understand some code and data structures that surround it. I don't want to cause a silicon logic fuse to blow. For the interested, the radio modem command to query the flag is "AT@SIMLOCK?AA". The command to set the flag is "AT@SIMLOCK=7,X" where X is 0 for S-OFF and 1 for S-ON. See the section further down rtask C - Talking to the Radio.

6th November: Listing the hboot "task" values and, where possible, what they do. rtask C - Talking to the Radio.

5th November: Taking a break from directly analysing hboot to work on my Linux tools that do the semi-automatic decomposition of the binary - think of them as an automated IDA Pro (the Windows dissasembler many users favour). I was spurred into this by the move to analysing the hboot RAM image since I needed to repeat days of manual analysis. I'm adding a database to the tools (sqlite) that stores symbol names and recognition signatures so once the information is gathered the tools can be re-run against any hboot image and in about 5 minutes produce a fully decoded pseudo source-code - instead of several days.

3rd November: Switched to analysing the in-memory (RAM) hboot image captured by Adam (Teferi) last week. This is already offering some great insights since it contains real values for variables as they were last before hboot started Linux. When analysing the hboot update ROM image these variable locations contain no useful values, which makes the code more opaque. Unfortunately I've got to repeat a lot of groundwork to get the RAM image analysis to the same level as the ROM image. One reason I held back from tackling this earlier was that the ROM image is a later version and therefore they don't match byte-for-byte, meaning my tools and my brain have to do extra work to figure out where variables, structures and functions are when mapping the ROM analysis to the RAM image.

3rd November: Completed analysis of embedded  zlib compression library, version 1.2.3 is used for extracting files from ZIP archives. Something I've looked at before but not documented yet is the way the CID can be changed via a micro_SD key-card. The card has a magic number embedded and contains a FAT file-system with the file DMCID.dat containing the new CID data. I've not dug into the routines in-depth but the value read from the file is superimposed into a radio modem command string "AT@CID=".

3rd November: Completed analysis of the libc (standard library) functions, and added them to the bootloader-ap project project. Spent several hours analysing some very large data structures that appear to be related to mapping regions and associated flags. This will need more work to discover the full extent of the structures, as well as what it is used for. Found a couple of code paths leading up from the S-OFF functions but got lost whilst tracking back and forward in the call stacks - will return to that with a clear head another time.

2nd November: Found the data structures that define the starting block, sizes and flags of all the eMMC partitions. Discovered that the 'radio' partition is treated as a conglomerate of the first 16 partitions of which the actual REXX/AMSS partition appears to be partition 5 (mmcblk0p5).

30th October: I need help identifying the purpose of two identical tables. Solved: They are page tables in easy-to-write-by-humans form that are then translated by additional code into ARM page table entries. I've attached them to this article as hboot-tables.tar.gz Download. They occur in the initialisation section of hboot. They are binary tables consisting of 364 elements each. Each element consists of three 32-bit values. They look like some kind of memory management unit (MMU) tables by their contents but their layout doesn't match either first- or second-level ARM page table entries (PTEs). See the new PageTables section below.

30th October: Realised that the hboot initialisation code (the first ~1700 bytes) is op-code identical to that contained in the Vision Linux kernel source-file arch/arm/mach-msm/arch-init-7x30.S. Not only has this revealed at a stroke what this code is doing (from the comments in the source-code file) but it also shines light on the legal status of the hboot binary, since the source-code file is licensed using the BSD 3-clause open source license. This helps clarify the status of the bootloader-ap project and means the source-file can be incorporated there directly.

28th October: Created the new GPLv3 bootloader-ap project. Using what I've learned from analysing hboot images I'm beginning the process of creating a binary-compatible source-code implementation that, once it is complete, can be used to provide users with a totally open-source applications-processor software stack. The initial commit to the git repository contains a working build system and architecture-specific assembler source-code that creates a ROM image that is binary-compatible with the hboot images.

24th Oct 2010: Investigations continuing, identifying function names and data structures.

  • hboot image fully disassembled
  • load address determined
  • some libc functions identified
  • source code for original hboot found
  • mapping original bootloader source to image. Successfully maps all the functions so far studied to machine code.
  • investigated Broadcom radio configuration settings
  • investigating msm_mpu_emmc_protect()
  • added latest function list as attachment. As at 2010-10-22 there are 1,292 functions recognised with 184 identified and named.
  • found routines that indicate an SD-Card "key-card" can set any CID
  • completed function list from embedded hboot clues. As at 2010-10-23 there are 1,308 functions recognised with 358 identified and named.

Time taken to date: 49 hours.

Information

task commands

Hboot console has a "task ??" command where ?? is a hexadecimal number that represents some, possibly destructive, command to execute immediately. These are the values and what they do:

28  Format userdata  29  Format BIN-FS (system, cache, userdata)    

rtask commands

This hboot console command is the radio-task command. Like 'task' it takes a single hexadecimal parameter that represents some function to perform. These are the values and what they do:

3 ?  A REXX shell  B Does rtask3 then rtask A (AMSS AT command interpreter (radio modem))  C Does rtask3 then lets AMSS take over the HS-USB port  D Sends the modem the "LTErfpath" command then starts the UART router on port #1  

rtask C - Talking to the Radio

This is proving interesting since it allows us to communicate directly with the radio modem over USB serial interfaces. There's a bit of jiggling to be done first. First, issue the "rtask C" command and after a moment the serial link will disappear and, if you're using screen, it'll quit.

Check the list of USB devices and you'll now see there's a Qualcomm device attached:

lsusb | egrep '0bb4|05c6  Bus 001 Device 043: ID 05c6:9002 Qualcomm, Inc.     

Check the kernel log and you'll find:

tail /var/log/kern.log   usb 1-1: USB disconnect, address 42   generic ttyUSB0: generic converter now disconnected from ttyUSB0   usbserial_generic 1-1:1.0: device disconnected   usb 1-1: new high speed USB device using ehci_hcd and address 43   usb 1-1: configuration #1 chosen from 1 choice   USB Serial support registered for Qualcomm USB modem   usb 1-1: unknown number of interfaces: 3   usb 1-1: unknown number of interfaces: 3   usb 1-1: unknown number of interfaces: 3   usbcore: registered new interface driver qcserial    

Because this is now a 'radio' analysis issue I've refined and moved the instructions. See Talking to the Radio.

Functions

There are a large number of functions (1,308), more than 384 identified. To save filling this page with the list I'll keep the latest version of the function names list in an attached file Download.

Function msm_mpu_emmc_protect()

This function and an associated sub-function give some indication of how HBoot deals with the eMMC write protection. The function name can be expanded to:

msm_ Mobile Station Modem (the Qualcomm system-on-chip)
mpu_ Memory Protection Unit (the ARM9 configures what addresses and types of access the ARM11 and other co-processors have access to)
emmc_ Embedded MultiMediaCard (the NAND flash storage device that presents as an external block device)

The function does a couple of interesting operations, each time calling a sub-function msm_mpu_emmc_protect_set(char *first, char *last, int bFlag) that takes a named range of partitions. E.g.

msm_mpu_emmc_protect_set("hboot", "mfg", 1);  msm_mpu_emmc_protect_set("hboot", "system", 1);      

Page Tables

Generated using my pagetables tool:

./pagetables -f ../Vision/roms/RUU_1.22.405.1-WWE/hboot-table-0260.bin   Base:	hexadecimal  Pagetable:		        1092	../Vision/roms/RUU_1.22.405.1-WWE/hboot-table-0260.bin  Processing...   Virtual     Physical    Count  {0x40000000, 0x05500000, 0x00000047},  {0x10000000, 0x09C00000, 0x00000064},  {0x49C00000, 0x19C00000, 0x00000064},  {0x16400000, 0x10000000, 0x0000009C},  {0x50000000, 0x20000000, 0x00000100},  {0x80000000, 0x04000000, 0x00000015},  {0x8D000000, 0x00000000, 0x00000004},  {0x00100000, 0x00400000, 0x00000001},  {0x8D400000, 0x00400000, 0x00000001},  {0x8C000000, 0x00700000, 0x00000003},  {0x90000000, 0xA7000000, 0x0000000D},  {0x90D00000, 0xAB000000, 0x00000001},  {0x90E00000, 0xA8900000, 0x00000001},  {0x90F00000, 0xA0000000, 0x00000001},  {0x91000000, 0xA8400000, 0x00000001},  {0x91100000, 0xA0200000, 0x00000002},  {0x91300000, 0xA3600000, 0x00000001},  {0x91400000, 0xA3100000, 0x00000001},  {0x91500000, 0xA3000000, 0x00000001},  {0x91600000, 0xA0500000, 0x00000001},  {0x91700000, 0xA0400000, 0x00000001},  {0x91800000, 0xA3300000, 0x00000001},  {0x91900000, 0xA3200000, 0x00000001},  {0x91A00000, 0xA3400000, 0x00000001},  {0x91B00000, 0xA3900000, 0x00000001},  {0x91C00000, 0xAD700000, 0x00000001},  {0x91D00000, 0xAD600000, 0x00000001},  {0x91E00000, 0xAD500000, 0x00000001},  {0x91F00000, 0xAD400000, 0x00000001},  {0x92000000, 0xAD300000, 0x00000001},  {0x92100000, 0xAC800000, 0x00000001},  {0x92200000, 0xACE00000, 0x00000001},  {0x92300000, 0xACD00000, 0x00000001},  {0x92400000, 0xAC900000, 0x00000001},  {0x92500000, 0xA3F00000, 0x00000001},  {0x92600000, 0xACC00000, 0x00000001},  {0x92700000, 0xACB00000, 0x00000001},  {0x92800000, 0xACA00000, 0x00000001},  {0x92900000, 0xA9800000, 0x00000001},  {0x92A00000, 0xAC500000, 0x00000001},  {0x92B00000, 0xAC400000, 0x00000001},  {0x92C00000, 0xAC300000, 0x00000001},  {0x92D00000, 0xAC200000, 0x00000001},  {0x92E00000, 0xAC100000, 0x00000001},  {0x92F00000, 0xAC000000, 0x00000001},  {0x93000000, 0xABF00000, 0x00000001},  {0x93100000, 0xABE00000, 0x00000001},  {0x93200000, 0xAB800000, 0x00000001},  {0x93300000, 0xAB500000, 0x00000001},  {0x93400000, 0xA8400000, 0x00000001},  {0x93500000, 0xA8700000, 0x00000001},  {0x93600000, 0xAB250000, 0x00000001},  {0x93700000, 0xAB240000, 0x00000001},  {0x93800000, 0xAB230000, 0x00000001},  {0x93900000, 0xAB220000, 0x00000001},  {0x93A00000, 0xAB210000, 0x00000001},  {0x93B00000, 0xAB200000, 0x00000001},  {0x93D00000, 0xB0000000, 0x00000001},  {0x93E00000, 0xB0200000, 0x00000001},  {0x93F00000, 0xB0300000, 0x00000001},  {0x94000000, 0xB0400000, 0x00000001},  {0x94100000, 0xB0500000, 0x00000001},  {0x94200000, 0xB0600000, 0x00000001},  {0x94300000, 0xB1000000, 0x0000000D},  {0x95000000, 0xB8000000, 0x00000001},  {0x95100000, 0xB8100000, 0x00000001},  {0x95200000, 0xB8200000, 0x00000001},  {0x95300000, 0xC0000000, 0x00000001},  {0x95400000, 0xC0100000, 0x00000001},  {0x95500000, 0xC0200000, 0x00000001},  {0x95600000, 0x88000000, 0x00000001},  {0x95700000, 0x89000000, 0x00000001},  {0x95800000, 0x8A000000, 0x00000001},  {0x95900000, 0x8B000000, 0x00000001},  {0x95A00000, 0x8C000000, 0x00000001},  {0x95B00000, 0x88000000, 0x00000001},  {0x95C00000, 0xA1000000, 0x00000001},  {0x95D00000, 0xA1100000, 0x00000001},  {0x95E00000, 0xA8000000, 0x00000001},  {0x95F00000, 0xA0F00000, 0x00000001},  {0x96000000, 0xB8300000, 0x00000001},  {0x96100000, 0xABD00000, 0x00000001},  {0x96200000, 0xABC00000, 0x00000001},  {0x96300000, 0xA8A00000, 0x00000001},  {0x96400000, 0xA8800000, 0x00000001},  {0x96500000, 0xAB600000, 0x00000001},  {0x96600000, 0xA8900000, 0x00000001},  {0x96700000, 0xAC100000, 0x00000001},  {0x96800000, 0xAD900000, 0x00000001},  {0x96900000, 0xA8300000, 0x00000001},  {0x00000000, 0x00000000, 0x00000000},  {0x00000000, 0x00000000, 0x00000000},  Done.    

FastBoot Mode Commands

When the device is started in FastBoot mode (hold down the Optical Joystick (OJ) button, press and release the power button, then release the OJ when the menu is displayed) or FASTBOOT is chosen from the HBoot menu, it will expect to receive commands over the serial USB link using the fast-boot protocol. This is defined in the Android Software Development Kit (SDK).

A fastboot program is built when an Android system build is done for the host PC. The program has a set of command line options and parameters that cause it to send commands to the device using the 'fast-boot' protocol and report the responses. It is mainly used by developers to send updated firmware image files for hboot, boot, recovery and system to the device or to issue other commands.

It is important to know that the fastboot tool on the host PC may not know all the commands that the device will respond to. Where analysis of the hboot image reveals commands that the fastboot tool doesn't know, the source-code of fastboot would need to be modified and a custom build done.

The well-known fastboot commands are:

fastboot    commands:    update <filename>                        reflash device from update.zip    flashall                                 flash boot + recovery + system    flash <partition> [ <filename> ]         write a file to a flash partition    erase <partition>                        erase a flash partition    getvar <variable>                        display a bootloader variable    boot <kernel> [ <ramdisk> ]              download and boot kernel    flash:raw boot <kernel> [ <ramdisk> ]    create bootimage and flash it    devices                                  list all connected devices    reboot                                   reboot device normally    reboot-bootloader                        reboot device into bootloader    

To provide for device-specific commands the protocol provides the "oem" command which takes a sub-command that is device specific. To discover what "oem" commands the device supports do:

$ fastboot oem ?    ... INFOcommand list  INFOkeytest  INFOheap  INFOboot  INFOreset  INFOpowerdown  INFOrebootRUU  INFOheap_test  INFOrtask  INFOtask  INFOenableqxdm  INFOgencheckpt  INFOlist_partition_emmc  INFOload_emmc  INFOcheck_emmc  INFOcheck_emmc_mid  INFOread_emmc  INFOget_wp_info_emmc  INFOsend_wp_info_emmc  INFOget_ext_csd_emmc  INFOget_sector_info_emmc  OKAY    

Most of these are the same commands as are accessible from an HBoot remote terminal. Further commands are available if the device has S-OFF.

In addition, the Vision supports the following non-oem commands that the fastboot tool may not be able to handle without modification:

signature <filename>                       send a 256 byte SHA signature to be used to verify files  download <length> <filename>               length is 8 hex characters which will be converted to a 32-bit long value    

Enquiries can be sent; for example:

$ fastboot getvar all    INFOversion: 0.5  INFOversion-bootloader: 0.85.0005  INFOversion-baseband: 26.03.02.26_M  INFOversion-cpld: None  INFOversion-microp: 0425  INFOversion-main: 1.34.405.5  INFOserialno: HT0AFRT01426  INFOimei: 352212040039153  INFOproduct: vision  INFOplatform: HBOOT-7230  INFOmodelid: PC1011000  INFOcidnum: HTC__001  INFObattery-status: good  INFObattery-voltage: 3825mV  INFOpartition-layout: Generic  INFOsecurity: on  INFObuild-mode: SHIP  INFOboot-mode: FASTBOOT  INFOcommitno-bootloader: dirty-9ddda97c  INFOhbootpreupdate: 11  INFOgencheckpt: 0  all: Done!    

HBoot Shell Commands

(recovered from browser cache thanks to Hymie after being deleted accidentally from the wiki)

battcheck <param1>                                              // battery check  bdaddress <param1>:<param2>:<param3>:<param4>:<param5>:<param6> // set bluetooth address (the bluetooth MAC)  bkflash2emmc                                                    // ?  btrouter                                                        // USB blue-tooth router?  emapi  emapiBand  emapiChannel  emapiCountryID                                                  // display country signature and ID  emapiCounters  emapiCrsuprs <channel>                                          // set carrier suppression mode (channel is 1-14 or 0 to stop test)  emapiDown  emapiEtheradd  emapiFqacurcy  emapiInit  emapiMpc  emapinRate  emapiOut  emapiPkteng_start  emapiPkteng_stop  emapiRate  emapiRateset "default" | "all" | <arbitrary rateset>            // determine the WiFi rates to use  emapiReadCal                                                    // read the WiFi calibration configuration  emapiSetDefCal                                                  // set default WiFi calibration  emapiSetIrqPin  emapiTest  emapiTXpwr1  emapiUp  emapiVersion  emapiWlanMac                                                    // display the WLAN MAC address and where it is stored in non-volatile storage  emptypagecheck                                                  // check empty pages (of what - memory, cache?)  erase <partition_name>                                          // erase data in <partition_name>  erasebcid                                                       // erase back-up CID  eraseconfig <param1>                                            // erase the config fields  erasesd ?                                                       // erase micro SD-card  eraseWifiFlash                                                  // erase WiFi flash memory  fmrouter                                                        // modem AT command shell to switch audio path (for FM radio) and start bt_router  fmtx                                                            // FM transmitter ?  gotofastboot                                                    // switch to fastboot mode  gotohboot                                                       // switch to hboot mode  heap                                                            // report heap memory usage  heaptable                                                       // display the Free and Allocated heap tables  imgcrc                                                          // calculate checksums on hboot, recovery, boot and system partitions  jump                                                            // immediately continue booting the device into the operating system  keytest                                                         // enter key-test mode: displays names of keys being pressed. Exits after 5 presses.  listpartition                                                   // list partition names  partition_test <name> [auto_mark_bad_flag]                      // test a partition  powerdown                                                       // immediately powers down the device  ram_test <start address> <length> <count> <mode>                // test RAM with or without cache  rbchk [partition | block]                                       // read bad-block (artition = <all|recovery|boot|system|cache|userdata>, block id in HEX format)  rebootRUU                                                       // immediately reboot in Remote Update Utility mode (boots with white-on-black HTC logo and waits for update)  readbcid                                                        // read back-up CID  readconfig                                                      // read the config fields  readmbserialno                                                  // read main-board serial number  readserialno                                                    // read device serial number  readsku                                                         // read the SKU fields (PCBID and others)  resetautoimage                                                  // ?  resetpreferdiag                                                 // ?  reset                                                           // immediately reset the device (reboots)  resetuP                                                         // reset microP ?  rflash <param1>                                                 // read NAND flash  rMfgTp                                                          // read manufacturers test points  rtask  savefb2sd <file name> [main|ruu]                                // save frame buffer to SD-card  savemem2sd <memory offset> <length> <file name>                 // save memory region to SD-card  saveprt2sd <partition name> <-n> <file name> <-a>               // save partition to SD-card  sdtest                                                          // test the micro SD-card  task <task number>  tflash                                                          // test NAND flash  tick                                                            // report clock tick  usbspeed ?  usbtestmode <value>  wMfgTp <param1> <...>                                           // write manufacturer test points   writebcid <param1>                                              // write back-up CID  writeconfig ?  writemid <param1>                                               // write model ID  writeserialno <param1>                                          // write serial number  writesku <param1> <param2>                                      // write SKU field with value     

Broadcom Radio

There are six separate instances in the data sections of HBoot of configuration strings for the  Broadcom BCM4329 which is described as "Low-Power 802.11n with Bluetooth® 2.1 + EDR and FM (Tx and Rx)". That last bit of information - FM transmitter - confirms what I'd previously suspected and hoped, that the device does indeed have the capability to transmit a low-power FM signal. Let's hope that when we get that functionality working with kernel plus user-space code there is also an antenna connected to the BCM4329!

This appears to suggest the HBoot may well have some provision for operating over WiFi or Bluetooth since it is hard to imagine why the boot-loader would get involved in configuring a device otherwise.

This is the first configuration set:

macaddr=00:11:22:33:44:55  sromrev=3  vendid=0x14e4  devid=0x432f  boardtype=0x4b9  boardrev=0x32  boardflags=0x200  xtalfreq=37400  aa2g=1  aa5g=0  ag0=255  pa0b0=6003  pa0b1=64086  pa0b2=65195  pa0itssit=62  pa0maxpwr=68  opo=16  mcs2gpo0=0x6666  mcs2gpo1=0x6666  rssismf2g=0xa  rssismc2g=0xb  rssisav2g=0x3  bxa2g=0  ccode=ALL  cctl=0x0  cckdigfilttype=0  ofdmdigfilttype=1  rxpo2g=0  boardnum=1  nocrc=1  otpimagesize=182  hwhdr=0x05ffff031030031003100000  RAW1=80 32 fe 21 02 0c 00 22 2a 01 01 00 00 c5 0 e6 00 00 00 00 00 40 00 00 ff ff 80 00 00 00 00 00 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 20 04 D0 2 29 43 21 02 0c 00 22 04 00 20 00 5A  sd_gpout=0  sd_oobonly=1    

And here are the differentials created against that for the following five configuration sets, beginning with set 2:

diff -NU0 hboot01.txt hboot02.txt  --- hboot01.txt	2010-10-24 05:29:54.000000000 +0100  +++ hboot02.txt	2010-10-24 05:30:05.000000000 +0100  @@ -6 +6 @@  -boardrev=0x32  +boardrev=0x36  @@ -12,3 +12,3 @@  -pa0b0=6003  -pa0b1=64086  -pa0b2=65195  +pa0b0=6003,6003,5576  +pa0b1=64086,64086,64172  +pa0b2=65195,65195,65155  @@ -16,7 +16,7 @@  -pa0maxpwr=68  -opo=16  -mcs2gpo0=0x6666  -mcs2gpo1=0x6666  -rssismf2g=0xa  -rssismc2g=0xb  -rssisav2g=0x3  +pa0maxpwr=82  +mcs2gpo0=0xCCCC  +mcs2gpo1=0xCCCC  +rssismf2g=0xa,0xa,0xa  +rssismc2g=0xb,0xb,0xa  +rssisav2g=0x3,0x3,0x3  +rcal_flag=0x61  @@ -27,0 +28 @@  +ofdmpo=0xCC888888      

Set 3:

diff -NU0 hboot01.txt hboot03.txt  --- hboot01.txt	2010-10-24 05:29:54.000000000 +0100  +++ hboot03.txt	2010-10-24 05:30:19.000000000 +0100  @@ -6 +6 @@  -boardrev=0x32  +boardrev=0x36  @@ -12,3 +12,3 @@  -pa0b0=6003  -pa0b1=64086  -pa0b2=65195  +pa0b0=6003,6003,5576  +pa0b1=64086,64086,64172  +pa0b2=65195,65195,65155  @@ -16,7 +16,7 @@  -pa0maxpwr=68  -opo=16  -mcs2gpo0=0x6666  -mcs2gpo1=0x6666  -rssismf2g=0xa  -rssismc2g=0xb  -rssisav2g=0x3  +pa0maxpwr=78  +mcs2gpo0=0xAAAA  +mcs2gpo1=0xAAAA  +rssismf2g=0xa,0xa,0xa  +rssismc2g=0xb,0xb,0xa  +rssisav2g=0x3,0x3,0x3  +rcal_flag=0x61  @@ -27,0 +28 @@  +ofdmpo=0xAAAAAAAA    

Set 4:

diff -NU0 hboot01.txt hboot04.txt  --- hboot01.txt	2010-10-24 05:29:54.000000000 +0100  +++ hboot04.txt	2010-10-24 05:30:29.000000000 +0100  @@ -6 +6 @@  -boardrev=0x32  +boardrev=0x36  @@ -12,3 +12,3 @@  -pa0b0=6003  -pa0b1=64086  -pa0b2=65195  +pa0b0=5514,5514,5593  +pa0b1=64257,64257,64287  +pa0b2=65283,65283,65328  @@ -16,7 +16,8 @@  -pa0maxpwr=68  -opo=16  -mcs2gpo0=0x6666  -mcs2gpo1=0x6666  -rssismf2g=0xa  -rssismc2g=0xb  -rssisav2g=0x3  +pa0maxpwr=74  +ofdmpo=0x88888886  +mcs2gpo0=0xAAAA  +mcs2gpo1=0xAAAA  +rssismf2g=0xa,0xa,0xa  +rssismc2g=0xb,0xb,0xa  +rssisav2g=0x3,0x3,0x3  +rcal_flag=0x61    

Set 5:

diff -NU0 hboot01.txt hboot05.txt  --- hboot01.txt	2010-10-24 05:29:54.000000000 +0100  +++ hboot05.txt	2010-10-24 05:30:40.000000000 +0100  @@ -6 +6 @@  -boardrev=0x32  +boardrev=0x36  @@ -12,3 +12,3 @@  -pa0b0=6003  -pa0b1=64086  -pa0b2=65195  +pa0b0=5514,5514,5320  +pa0b1=64257,64257,64216  +pa0b2=65283,65283,65155  @@ -16,7 +16,8 @@  -pa0maxpwr=68  -opo=16  -mcs2gpo0=0x6666  -mcs2gpo1=0x6666  -rssismf2g=0xa  -rssismc2g=0xb  -rssisav2g=0x3  +pa0maxpwr=74  +ofdmpo=0xAAAAAAAA  +mcs2gpo0=0xAAAA  +mcs2gpo1=0xAAAA  +rssismf2g=0xa,0xa,0xa  +rssismc2g=0xb,0xb,0xa  +rssisav2g=0x3,0x3,0x3  +rcal_flag=0x61    

Set 6:

diff -NU0 hboot01.txt hboot06.txt  --- hboot01.txt	2010-10-24 05:29:54.000000000 +0100  +++ hboot06.txt	2010-10-24 05:29:18.000000000 +0100  @@ -4,3 +4,3 @@  -devid=0x432f  -boardtype=0x4b9  -boardrev=0x32  +devid=0x432e  +boardtype=0x4ff  +boardrev=0x19  @@ -10 +10 @@  -aa5g=0  +aa5g=1  @@ -12,3 +12,3 @@  -pa0b0=6003  -pa0b1=64086  -pa0b2=65195  +pa0b0=5939,5939,5112  +pa0b1=64096,64096,64229  +pa0b2=65195,65195,65081  @@ -16,4 +16,25 @@  -pa0maxpwr=68  -opo=16  -mcs2gpo0=0x6666  -mcs2gpo1=0x6666  +pa0maxpwr=78  +ofdmpo=0xCC888888  +mcs2gpo0=0xCCCC  +mcs2gpo1=0xCCCC  +cckdigfilttype=0  +ofdmdigfilttype=1  +pa1lob0=6110  +pa1lob1=64080  +pa1lob2=65245  +pa1b0=6867  +pa1b1=63891  +pa1b2=65306  +pa1hib0=5871  +pa1hib1=64126  +pa1hib2=65222  +pa1itssit=62  +maxp5g=50  +maxp5gl=50  +maxp5gh=50  +ofdm5gpo=0x22222222  +ofdm5glpo=0x22222222  +ofdm5ghpo=0x22222222  +mcs5gpo0=0x22222222  +mcs5glpo0=0x22222222  +mcs5ghpo0=0x22222222  @@ -23,0 +45,4 @@  +rssismf5g=0xa  +rssismc5g=0xa  +rssisav5g=0x3  +bxa5g=0  @@ -26,2 +50,0 @@  -cckdigfilttype=0  -ofdmdigfilttype=1  @@ -29 +52,2 @@  -boardnum=1  +rxpo5g=0  +boardnum=2048  @@ -33,3 +56,0 @@  -RAW1=80 32 fe 21 02 0c 00 22 2a 01 01 00 00 c5 0 e6 00 00 00 00 00 40 00 00 ff ff 80 00 00 00 00 00 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 20 04 D0 2 29 43 21 02 0c 00 22 04 00 20 00 5A  -sd_gpout=0  -sd_oobonly=1    

Partitions

A list of partition name strings:

01 BOOTLOADER    hboot  02 RADIO_V2      radio  03 MFG_DIAG      mfg  04 SPLASH1       sp1  05 SPLASH2       sp2  06 SP_CUSTOM     spcustom  07 SP_CHG        spchg  08 RECOVERY      recovery  09 BOOT          boot  10 SYSTEM        system  11 SYSTEM        dzsystem  12 OPL           opl  13 USERDATA      userdata  14 USERDATA      dzdata  15 MERGEMFG      merge_mfg  16 CPLD          cpld            // '''complex programmable logic device'''  17 MICROP        microp  18 RADIO_NV      nv  19 RADIO_CUST    rcdata  20 TP_MELFAS     tp-melfas  21 TP_ATMEL      tp_atmel  22 TP            tp  23 TOUCHSCREEN   touchscreen  24 RAW_TOUCH1    x_touchscreen  25 RAW_TOUCH2    d_touchscreen  26 XLOADER       xloader  27 WIFI          wifi  28 CMMB          cmmb  29 MDM9K         mdm9k  30 MDMNV         mdmnv  

0 件のコメント:

コメントを投稿