Project

General

Profile

GTI9300PARAM » History » Version 5

Denis 'GNUtoo' Carikli, 01/31/2022 09:01 AM
USB switch: Add command output context

1 1 Denis 'GNUtoo' Carikli
h1. GTI9300PARAM
2
3
You can dump the PARAM partition for the Galaxy SIII (GT-I9300) like that:
4
<pre>
5
adb pull /dev/block/platform/dw_mmc/by-name/PARAM PARAM.img
6
</pre>
7
8
That file at first looks like a tar archive.
9
<pre>
10
$ file PARAM.img
11
PARAM.img: POSIX tar archive (GNU)
12
</pre>
13
14
And it indeed does contain a tarball:
15
<pre>
16
$ tar tvf PARAM.img
17
-rw-r--r-- se.infra/se.infra 3624 2013-11-28 13:33 adv-env.img
18
-rw-r--r-- se.infra/se.infra 42023 2013-11-28 13:33 ani_upload_1_kernel_panic.jpg
19
-rw-r--r-- se.infra/se.infra 39255 2013-11-28 13:33 ani_upload_2_cp_crash.jpg
20
-rw-r--r-- se.infra/se.infra 47443 2013-11-28 13:33 ani_upload_3_forced_upload.jpg
21
-rw-r--r-- se.infra/se.infra 10810 2013-11-28 13:33 ani_upload_4_hardware_reset.jpg
22
-rw-r--r-- se.infra/se.infra 11586 2013-11-28 13:33 ani_upload_4_smpl.jpg
23
-rw-r--r-- se.infra/se.infra 54151 2013-11-28 13:33 ani_upload_4_unknown_reset.jpg
24
-rw-r--r-- se.infra/se.infra 11495 2013-11-28 13:33 ani_upload_4_watchdog_reset.jpg
25
-rw-r--r-- se.infra/se.infra 12276 2013-11-28 13:33 ani_upload_4_wtsr.jpg
26
-rw-r--r-- se.infra/se.infra  9703 2013-11-28 13:33 ani_upload_4_wtsr_smpl.jpg
27
-rw-r--r-- se.infra/se.infra 12711 2013-11-28 13:33 ani_upload_5_user_fault.jpg
28
-rw-r--r-- se.infra/se.infra 19098 2013-11-28 13:33 ani_upload_6_hsic_disconnected.jpg
29
-rw-r--r-- se.infra/se.infra 84123 2013-11-28 13:33 download_error.jpg
30
-rw-r--r-- se.infra/se.infra 73061 2013-11-28 13:33 download.jpg
31
-rw-r--r-- se.infra/se.infra 64410 2013-11-28 13:33 logo.jpg
32
-rw-r--r-- se.infra/se.infra 37205 2013-11-28 13:33 lpm.jpg
33
-rw-r--r-- se.infra/se.infra 36572 2013-11-28 13:33 lpm_wireless.jpg
34
-rw-r--r-- se.infra/se.infra 91511 2013-11-28 13:33 secure_error.jpg
35
-rwxr-xr-x se.infra/se.infra  5851 2013-11-28 13:33 sud_0.jpg
36
-rwxr-xr-x se.infra/se.infra  2713 2013-11-28 13:33 sud_1.jpg
37
-rwxr-xr-x se.infra/se.infra  5634 2013-11-28 13:33 sud_2.jpg
38
-rwxr-xr-x se.infra/se.infra  6292 2013-11-28 13:33 sud_3.jpg
39
-rwxr-xr-x se.infra/se.infra  4604 2013-11-28 13:33 sud_4.jpg
40
-rwxr-xr-x se.infra/se.infra  5706 2013-11-28 13:33 sud_5.jpg
41
-rwxr-xr-x se.infra/se.infra  6792 2013-11-28 13:33 sud_6.jpg
42
-rwxr-xr-x se.infra/se.infra  3885 2013-11-28 13:33 sud_7.jpg
43
-rwxr-xr-x se.infra/se.infra  6826 2013-11-28 13:33 sud_8.jpg
44
-rwxr-xr-x se.infra/se.infra  6528 2013-11-28 13:33 sud_9.jpg
45
-rw-r--r-- se.infra/se.infra 168616 2013-11-28 13:33 warning.jpg
46
</pre>
47
48
The size of the PARAM.img file is exactly 8MiB:
49
<pre>
50
$ ls -lah PARAM.img 
51
[...] 8.0M [...] PARAM.img
52
$ ls -la PARAM.img 
53
[...] 8388608 [...] PARAM.img
54
</pre>
55
56
And we can get the size of the tarball with --totals:
57
<pre>
58
$ man tar
59
  [...]
60
  --totals[=SIGNAL]
61
         Print  total bytes after processing the archive. [...]
62
</pre>
63
64
For example:
65
<pre>
66
$ tar  --totals -tf PARAM.img
67
adv-env.img
68
[many files]
69
warning.jpg
70
Total bytes read: 911360 (890KiB, 286MiB/s)
71
</pre>
72
73
So here the tarball terminates way beyond the end.
74
75
911360 is 0xde800:
76
<pre>
77
$ python
78
[...]
79
>>> hex(911360)
80
'0xde800'
81
</pre>
82
83
But we still have things after the tarball:
84
<pre>
85
$ hexdump -C PARAM.img
86
000dd4a0  05 00 14 00 50 07 ff d9  00 00 00 00 00 00 00 00  |....P...........|
87
000dd4b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
88
*
89
00700000  03 00 fe ca 00 01 00 00  00 00 00 00 00 00 00 00  |................|
90
00700010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
91
*
92
00700200  00 00 00 00 03 00 00 00  4c 4f 00 00 00 00 00 00  |........LO......|
93
00700210  00 00 00 00 03 00 00 00  01 00 00 00 00 00 00 00  |................|
94
00700220  00 00 00 00 00 00 00 00  63 6f 6e 73 6f 6c 65 3d  |........console=|
95
00700230  72 61 6d 20 6c 6f 67 6c  65 76 65 6c 3d 34 00 00  |ram loglevel=4..|
96
00700240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
97
*
98
00700e20  00 00 00 00 00 00 00 00  ff ff ff ff ff ef 7f ff  |................|
99
00700e30  ff ff f7 ff ff ff f7 ff  ff fe ff ff ff ff 7f ff  |................|
100
00700e40  fb ef ff ff ff fb ff df  ff ff ff ff ff ff ff ff  |................|
101
00700e50  df bf ff ff 7f ef f7 ff  f7 ff ff ff ff fe ff ff  |................|
102
00700e60  ff ff ff ff ef fb ff ef  ff fb ff ff fd ff f7 ef  |................|
103
00700e70  ff ff ff ff f5 ff ff ff  ff ff ff ff ff ff ff ff  |................|
104
00700e80  ff ff ff fe ff ef ff ff  ff bf fd ff ff ff ff ff  |................|
105
00700e90  ff ff ff ff ff ff f7 fb  ff ff ff eb ff ff ff eb  |................|
106
00700ea0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff fb  |................|
107
00700eb0  ff ff ff ff ff ff ff ff  ff ff ff df ff ff ff ff  |................|
108
00700ec0  ff ff ff ff ff ff f7 ff  ff ff ff ff ff ff ff ff  |................|
109
00700ed0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff fb  |................|
110
00700ee0  df ff ff ff ff ff ff ff  ff ff ff ff ff ff d7 ff  |................|
111
00700ef0  ff ff ff af ff ff ff fe  ff ff ff ff ff ff ff ff  |................|
112
00700f00  ff ef ff ff ff 7f ff ff  ff df ff ff f7 ff ff ff  |................|
113
00700f10  ff ff ff ff ff ff ff ff  ff ff ff ef ff ff f7 ff  |................|
114
00700f20  ff ff ff ff ff ff ff ff  ff fe ef ff ff ef fb df  |................|
115
00700f30  ff ff ff ff ff fb ff ff  ff ff ff ff ff ff ff ff  |................|
116
00700f40  ff ff f5 ff ff ff ff fb  ff ff ff ff ff ff ff ff  |................|
117
00700f50  fb ff ff fb fd ff ff ff  ff ff ff ff ff ff ff ff  |................|
118
00700f60  f7 ff ff ef f7 ff ff ef  ff ff ff ff ff 9e ff fd  |................|
119
00700f70  ff ff ff ff fb ff ff de  f3 fb ff ff ff ef df ff  |................|
120
00700f80  ff ff ff ff ff fb ff bf  ff ff ff ff ff ff ff fd  |................|
121
00700f90  ff fe f7 fe ff eb ff ff  ff fb ff ff df ff ff ff  |................|
122
00700fa0  df ff ff ff ff ff ff ff  ff ff fb ff ff ff ff fb  |................|
123
00700fb0  ff ff ff df ff ff ff ff  fe fe fe ff ff f7 ff ff  |................|
124
00700fc0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff fb  |................|
125
00700fd0  fd ff ff ff ff fd ff ff  ff ff ff ff fe ff ff ff  |................|
126
00700fe0  ff ff df ff ff ff ff fb  ff ff ff ff ff ff ff ff  |................|
127
00700ff0  ff f7 df ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
128
00701000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
129
*
130
007ffc00  d4 ad 55 ff 52 e9 ed 4c  f8 d1 9c 08 79 b6 e9 6c  |..U.R..L....y..l|
131
007ffc10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
132
*
133
00800000
134
</pre>
135
136
Questions:
137
* Can we ignore what is after the tarball and grow it to 8MiB?
138
* Does what's after contains encrypted data for the bootloader?
139 2 Denis 'GNUtoo' Carikli
140
h2. adv_env.img
141
142
Here's the content of the adv-env.img file:
143
<pre>
144
$ hexdump -C adv-env.img 
145
00000000  03 00 fe ca 00 01 00 00  00 00 00 00 00 00 00 00  |................|
146
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
147
*
148
00000200  04 00 00 00 01 00 00 00  4c 4f 00 00 00 00 00 00  |........LO......|
149
00000210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
150
00000220  00 00 00 00 00 00 00 00  63 6f 6e 73 6f 6c 65 3d  |........console=|
151
00000230  72 61 6d 20 6c 6f 67 6c  65 76 65 6c 3d 34 00 00  |ram loglevel=4..|
152
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
153
*
154
00000e20  00 00 00 00 00 00 00 00                           |........|
155
00000e28
156
</pre>
157
158
Questions:
159
* Why are the kernel parameters repeated again after the end of the tarball?
160
* Where are the updated kernel parameters stored?
161
* Are the default and in-use kernel parameters stored at different location?
162 3 Denis 'GNUtoo' Carikli
163
h2. kenrel command line
164
165
*Default kernel command line*: @console=ram loglevel=4@
166
167
Test: 
168
* change to @console=ram loglevel=8@ through the bootloader setenv command
169
* run saveenv 
170
* reboot and validate that it's really changed with printenv
171
* observe the results on the filesystem
172
173
See [[MidasBootloader]] for more details on how to change the command line parameters.
174
175
After changing the environment variable, we still have loglevel=4 in the adv-env.img file that is in the tarball:
176
adv-env.img
177
<pre>
178
$ hexdump -C adv-env.img 
179
00000000  03 00 fe ca 00 01 00 00  00 00 00 00 00 00 00 00  |................|
180
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
181
*
182
00000200  04 00 00 00 01 00 00 00  4c 4f 00 00 00 00 00 00  |........LO......|
183
00000210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
184
00000220  00 00 00 00 00 00 00 00  63 6f 6e 73 6f 6c 65 3d  |........console=|
185
00000230  72 61 6d 20 6c 6f 67 6c  65 76 65 6c 3d 34 00 00  |ram loglevel=4..|
186
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
187
*
188
00000e20  00 00 00 00 00 00 00 00                           |........|
189
00000e28
190
</pre>
191
So these must be the default parameters.
192
193
And the actual kernel parameters were instead saved after the tarball:
194
<pre>
195
$ hexdump PARAM.img
196
*
197
00700200  00 00 00 00 03 00 00 00  4c 4f 00 00 00 00 00 00  |........LO......|
198
00700210  00 00 00 00 03 00 00 00  01 00 00 00 00 00 00 00  |................|
199
00700220  00 00 00 00 00 00 00 00  63 6f 6e 73 6f 6c 65 3d  |........console=|
200
00700230  72 61 6d 20 6c 6f 67 6c  65 76 65 6c 3d 38 00 00  |ram loglevel=8..|
201
00700240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
202
*
203
</pre>
204
205
206
*Results:* 
207
* Since the s-boot 4.0 bootloader on several Exynos 4412 devices (GT-I9300, GT-I9305, GT-N7100, GT-N7105) doesn't take into account the boot.img kenrel parameters, we can then try to change them by editing the PARAM.img after the tarball.
208
* There is valuable info after the tarball => don't make the tarball grow too much.
209 4 Denis 'GNUtoo' Carikli
210
h2. USB switch
211
212
On a GT-I9300, if I set the address @0x00700204@ to @00@, it switch to the USB to the modem's USB, and @Bus 002 Device 095: ID 1519:0020 Comneon HSIC Device@ appears when connecting the GT-I9300 to a computer.
213
214
When I set it back to @01@, I can have ADB again.
215
216 1 Denis 'GNUtoo' Carikli
Here's the diff:
217
<pre>
218 5 Denis 'GNUtoo' Carikli
$ vbindiff PARAM.img PARAM.img.new
219
PARAM.img
220 4 Denis 'GNUtoo' Carikli
0070 0204: 00 00 00 00 4C 4F 00 00  00 00 00 00 00 00 00 00  ....LO.. ........  
221
0070 0214: 03 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
222
0070 0224: 00 00 00 00 63 6F 6E 73  6F 6C 65 3D 72 61 6D 20  ....cons ole=ram   
223
0070 0234: 6C 6F 67 6C 65 76 65 6C  3D 38 00 00 00 00 00 00  loglevel =8......  
224
0070 0244: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
225
0070 0254: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
226
0070 0264: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
227
0070 0274: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
228
0070 0284: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
229
0070 0294: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
230
0070 02A4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
231
0070 02B4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
232
0070 02C4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
233
0070 02D4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
234
0070 02E4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
235
0070 02F4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
236
PARAM.img.new                                                                   
237
0070 0204: 01 00 00 00 4C 4F 00 00  00 00 00 00 00 00 00 00  ....LO.. ........  
238
0070 0214: 03 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
239
0070 0224: 00 00 00 00 63 6F 6E 73  6F 6C 65 3D 72 61 6D 20  ....cons ole=ram   
240
0070 0234: 6C 6F 67 6C 65 76 65 6C  3D 38 00 00 00 00 00 00  loglevel =8......  
241
0070 0244: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
242
0070 0254: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
243
0070 0264: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
244
0070 0274: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
245
0070 0284: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
246
0070 0294: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
247
0070 02A4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
248
0070 02B4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
249
0070 02C4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
250
0070 02D4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
251
0070 02E4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
252
0070 02F4: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........  
253
┌──────────────────────────────────────────────────────────────────────────────┐
254
│Arrow keys move  F find      RET next difference  ESC quit  T move top        │
255
│C ASCII/EBCDIC   E edit file   G goto position      Q quit  B move bottom     │
256
└──────────────────────────────────────────────────────────────────────────────┘
257
</pre>
258
259
You can also get that behavior with the stock OS if you go to the phone application and enter *#7284# and set "USB" to
260
"MODEM" and tap "SAVE and RESET". After that phone will reboot and you'll see the modem when connecting the GT-I9300 to a computer through USB.