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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
**********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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
--- 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,
 };

2 Comments

  1. Ryo says:

    Great work!
    I asked NEC Japan to get modified kernel source and sure they have it for Life touch note.
    To get source for LTN you must register your product serial number written on the back side of the body at following url.
    https://www.nec.co.jp/solution/cloud/communicator/gpl/LifeTouch_NOTE_LTNA7/form.html

    They must have one for ac100 outside of Japan. It’s certain you can get the optimized source for your ac100, because they said “yes, it’s the GPL requirement to provide the sources”.
    The rep do not know who provide the kernel source for ac100 outside of Japan, so that you have to find out. I heard that they provide sources just for LTN because they don’t sell ac100 in Japan. It’s logical lol.
    It’s good to ask your local NEC service reps.

  2. new299 says:

    hi,

    Yes, I have the source code now! I put the kernel source up on my github account at http://github.com/new299

Leave a Reply