Lifetouch note notes

Accessing APX Mode

lifenote touch apx

There’s a unplaced switch just above the Nvidia Tegra 250 CPU shield (see image above). Connect pins 3 and 4 of SW2 while pressing the power button to enable APX mode.

Flashing a partition using nvflash

nvflash –bl /usr/lib/nvflash/fastboot.bin –download 11 ./lubuntu-12.10-preinstalled-desktop-armhf+ac100.bootimg

The Lifetouch note appears to have the LNX partition on partition 11, not 6 as the ac100.

Note: The ac100 bootimage does NOT work. The screen does some funky stuff, but nothing to indicate that it’s actually booting a kernel. (update: The SOSBoot kernel boots and the serial console works, but not the display.)

Partition table

The partition table can be dumped with nvflash –bl –getpartitiontable , mine is as follows:

PartitionId=2
Name=BCT
DeviceId=18
StartSector=0
NumSectors=1536
BytesPerSector=2048


PartitionId=3
Name=PT
DeviceId=18
StartSector=1536
NumSectors=128
BytesPerSector=2048


PartitionId=4
Name=EBT
DeviceId=18
StartSector=1664
NumSectors=1024
BytesPerSector=2048


PartitionId=5
Name=NVC
DeviceId=18
StartSector=2688
NumSectors=256
BytesPerSector=2048


PartitionId=6
Name=MBR
DeviceId=18
StartSector=2944
NumSectors=512
BytesPerSector=2048


PartitionId=7
Name=MSC
DeviceId=18
StartSector=3456
NumSectors=1024
BytesPerSector=2048


PartitionId=8
Name=MFG
DeviceId=18
StartSector=4480
NumSectors=76800
BytesPerSector=2048


PartitionId=9
Name=SOS
DeviceId=18
StartSector=81280
NumSectors=2560
BytesPerSector=2048


PartitionId=10
Name=ER1
DeviceId=18
StartSector=83840
NumSectors=128
BytesPerSector=2048


PartitionId=11
Name=LNX
DeviceId=18
StartSector=83968
NumSectors=4096
BytesPerSector=2048


PartitionId=12
Name=ER2
DeviceId=18
StartSector=88064
NumSectors=128
BytesPerSector=2048


PartitionId=13
Name=APP
DeviceId=18
StartSector=88192
NumSectors=98304
BytesPerSector=2048


PartitionId=14
Name=ER3
DeviceId=18
StartSector=186496
NumSectors=128
BytesPerSector=2048


PartitionId=15
Name=CAC
DeviceId=18
StartSector=186624
NumSectors=76800
BytesPerSector=2048


PartitionId=16
Name=ER4
DeviceId=18
StartSector=263424
NumSectors=128
BytesPerSector=2048


PartitionId=17
Name=USP
DeviceId=18
StartSector=263552
NumSectors=128000
BytesPerSector=2048


PartitionId=18
Name=ER5
DeviceId=18
StartSector=391552
NumSectors=128
BytesPerSector=2048


PartitionId=19
Name=UDA
DeviceId=18
StartSector=391680
NumSectors=3520000
BytesPerSector=2048

nvflash output

nvflash --bl /usr/lib/nvflash/fastboot.bin --download 11 ./ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg
Nvflash started 
rcm version 0X20001                                
System Information:                               
   chip name: t20                                 
   chip id: 0x20 major: 1 minor: 3                        
   chip sku: 0x8                                  
   chip uid: XXXXXX                   
   macrovision: disabled                          
   hdcp: enabled                                  
   sbk burned: false                                       
   dk burned: false                                                      
   boot device: emmc                                                                     
   operating mode: 3                                                                                        
   device config strap: 0                                              
   device config fuse: 0                           
   sdram config strap: 0                                           
                                                                   
downloading bootloader -- load address: 0x108000 entry point: 0x108000                                  
sending file: /usr/lib/nvflash/fastboot.bin                                                  
| 940112/940112 bytes sent  
/usr/lib/nvflash/fastboot.bin sent successfully                
waiting for bootloader to initialize                                                             
bootloader downloaded successfully                                
sending file: ./ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg                   
/ 8388608/8388608 bytes sent                                                                       
./ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg sent successfully

PCB Images:

Bootable kernel

Kernel from: http://developer.download.nvidia.com/assets/mobile/files/tegra-linux-12.alpha.1.0.tar.gz

Boot image built with: ./bootloader/mkbootimg –kernel ./kernel/zImage –ramdisk NONE -o ~/m.img –cmdline “debug mem=128M”

Update: sosboot and probably other ac100 kernel boot and show data on the serial port.

Serial Port

There’s a 3.3v level serial port located under the SD Card slot (see additional post). No connector is mounted, you’ll need to solder one. The output is as follows:

**********Aos DebugSemiHosting Initialized*******                           
---------------------------------------------------                         
ODM CPU freq request beyond SOC limit                                       
ADJUSTED CLOCKS:                                                            
MC clock is set to 333000 KHz                                               
EMC clock is set to 666000 KHz (DDR clock is at 333000 KHz)                 
PLLX0 clock is set to 1000000 KHz                                           
PLLC0 clock is set to 600000 KHz                                            
CPU clock is set to 1000000 KHz                                             
System and AVP clock is set to 240000 KHz                                   
GraphicsHost clock is set to 108000 KHz                                     
3D clock is set to 111000 KHz                                               
2D clock is set to 111000 KHz                                               
Epp clock is set to 111000 KHz                                              
Mpe clock is set to 111000 KHz                                              
Vde clock is set to 240000 KHz                                              
DTT: TMON initialization failed                                             
Bootloader version: eng.NEC.20110609.091639                                 
                                                                            
                                                                            
I2C Slave is *New*                                                          
***NVEC:Received Spurious Response from EC.Checking for android ota recovery
                                                                            
OS will cold boot in 0 seconds if no input is detected                      
                                                                            
Key driver not found.. Booting OS                                           
                                                                            
Cold-booting Linux                                                          

Source code

There’s a source code release by NEC. I’ve uploaded it here.

Framebuffer notes

From the NEC source release:

  // these values are just defaults. they will be over-written with th
  // correct values from the boot args.                               
  .var = {                                                            
    .xres   = 800,                                                    
    .yres   = 480,                                                    
    .xres_virtual = 800,                                              
    .yres_virtual = 480,                                              
    .bits_per_pixel = 16,                                             
    .red    = {11, 5, 0},                                             
    .green    = {5, 6, 0},                                            
    .blue   = {0, 5, 0},                                              
    .transp   = {0, 0, 0},                                            
    .activate = FB_ACTIVATE_NOW,                                      
    .height   = -1,                                                   
    .width    = -1,                                                   
    .pixclock = 24500,                                                
    .left_margin  = 0,                                                
    .right_margin = 0,                                                
    .upper_margin = 0,                                                
    .lower_margin = 0,                                                
    .hsync_len  = 0,                                                  
    .vsync_len  = 0,                                                  
    .vmode    = FB_VMODE_NONINTERLACED,                               
  },                                                                  

AC100 config, patch to use different display:

--- marvin-2.6.38.8-oc/arch/arm/mach-tegra/board-paz00-panel.c.old	2011-09-19 19:33:24.000000000 +0100
+++ marvin-2.6.38.8-oc/arch/arm/mach-tegra/board-paz00-panel.c	2011-12-29 23:56:45.588167000 +0000
@@ -251,7 +251,7 @@
 	{
 		.name	= "fbmem",
 		.start	= 0x1fd95000,
-		.end	= 0x1fd95000 + 0x26B000 - 1,   // 2.4 MB @ 509 MB
+		.end	= 0x1fd95000 + 0x384000 - 1,   // 2.4 MB @ 509 MB
 		.flags	= IORESOURCE_MEM,
 	},
 };
@@ -279,15 +279,15 @@
 
 static struct tegra_dc_mode paz00_panel_modes[] = {
 	{
-		.pclk = 42430000,
+		.pclk = 71735520,
 		.h_ref_to_sync = 4,
 		.v_ref_to_sync = 2,
 		.h_sync_width = 136,
 		.v_sync_width = 4,
 		.h_back_porch = 138,
 		.v_back_porch = 21,
-		.h_active = 1024,
-		.v_active = 600,
+		.h_active = 1280,
+		.v_active = 720,
 		.h_front_porch = 34,
 		.v_front_porch = 4,
 	},
@@ -295,8 +295,8 @@
 
 static struct tegra_fb_data paz00_fb_data = {
 	.win		= 0,
-	.xres		= 1024,
-	.yres		= 600,
+	.xres		= 1280,
+	.yres		= 720,
 	.bits_per_pixel	= 16,
 };