summaryrefslogtreecommitdiff
path: root/utils/nwztools/database/models.txt
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2016-11-11 15:40:56 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2016-11-11 16:07:14 +0100
commit44bb2856a59be53ef5ede154a39c54a59b1cc6d0 (patch)
treece343ecff309d6d0172ea56946a9ce679329b250 /utils/nwztools/database/models.txt
parent19de536ce2f3c8066ca5be9b570f72e5c1e88342 (diff)
downloadrockbox-44bb2856a59be53ef5ede154a39c54a59b1cc6d0.tar.gz
rockbox-44bb2856a59be53ef5ede154a39c54a59b1cc6d0.zip
nwztools/database: add database of information on Sony NWZ linux players
There must be an evil genius in Sony's Walkman division. Someone who made sure that each model is close enough to the previous one so that little code is needed but different enough so that an educated guess is not enough. Each linux-based Sony player has a model ID (mid) which is a 32-bit integer. I was able to extract a list of all model IDs and the correspoding name of the player (see README). This gives us 1) a nice list of all players (because NWZ-A729 vs NWZ-A729B, really Sony?) 2) an easy way to find the name of player programatically. It seems that the lower 8-bit of the model ID gives the storage size but don't bet your life on it. The remaining bytes seem to follow some kind of pattern but there are exceptions. From this list, I was able to build a list of all Sony's series (up to quite recent one). The only safe way to build that is by hand, with a list of series, each series having a list of model IDs. The notion of series is very important because all models in a series share the same firmware. A very important concept on Sony's players is the NVP, an area of the flash that stores data associated with keys. The README contains more information but basically this is where is record the model ID, the destination, the boot flags, the firmware upgrade flags, the boot image, the DRM keys, and a lot of other stuff. Of course Sony decided to slightly tweak the index of the keys regularly over time which means that each series has a potentially different map, and we need this map to talk to the NVP driver. Fortunately, Sony distributes the kernel for all its players and they contain a kernel header with this information. I wrote a script to unpack kernel sources and parse this header, producing a bunch of nw-*.txt files, included in this commit. This map is very specific though: it maps Sony's 3-letter names (bti) to indexes (1). This is not very useful without the decription (bti = boot image) and its size (262144). This information is harder to come by, and is only stored in one place: if icx_nvp_emmc.ko drivers, found on the device. Fortunately, Sony distributes a number of firmware upgrade, that contain the rootfs, than once extracted contain this driver. The driver is a standard ELF files with symbols. I wrote a parsing tool (nvptool) that is able to extract this information from the drivers. Using that, I produced a bunch of nodes-nw*.txt files. A reasonable assumption is that nodes meaning and size do not change over time (bti is always the boot image and is always 262144 bytes), so by merging a few of those file, we can get a complete picture (note that some nodes that existed in older player do not exists anymore so we really need to merge several ones from different generations). The advantage of storing all this information in plain text files, is that it now makes it easy to parse it and produce whatever format we want to use it. I wrote a python script that parses all this mess and produces a C file and header with all this information (nwz_db.{c,h}). Change-Id: Id790581ddd527d64418fe9e4e4df8e0546117b80
Diffstat (limited to 'utils/nwztools/database/models.txt')
-rw-r--r--utils/nwztools/database/models.txt181
1 files changed, 181 insertions, 0 deletions
diff --git a/utils/nwztools/database/models.txt b/utils/nwztools/database/models.txt
new file mode 100644
index 0000000000..89a372f1bd
--- /dev/null
+++ b/utils/nwztools/database/models.txt
@@ -0,0 +1,181 @@
10x10000,NWZ-A815
20x10001,NWZ-A816
30x10002,NWZ-A818
40x1000000,NW-S615F
50x1000001,NW-S616F
60x1010000,NW-S715F
70x1010001,NW-S716F
80x1010002,NW-S718F
90x1020000,NWZ-S615F
100x1020001,NWZ-S616F
110x1020002,NWZ-S618F
120x1030000,NWZ-S515
130x1030001,NWZ-S516
140x1040000,NWZ-S715F
150x1040001,NWZ-S716F
160x1040002,NWZ-S718F
170x2000001,NW-A916
180x2000002,NW-A918
190x2000004,NW-A919
200x3000001,NWZ-A826
210x3000002,NWZ-A828
220x3000004,NWZ-A829
230x3010001,NW-A826
240x3010002,NW-A828
250x3010004,NW-A829
260x3020001,NWZ-A726B
270x3020002,NWZ-A728B
280x3020004,NWZ-A729B
290x3030001,NWZ-A726
300x3030002,NWZ-A728
310x3030004,NWZ-A729
320x4000001,NW-S636F
330x4000002,NW-S638F
340x4000004,NW-S639F
350x4010001,NW-S736F
360x4010002,NW-S738F
370x4010004,NW-S739F
380x4020001,NWZ-S636F
390x4020002,NWZ-S638F
400x4020004,NWZ-S639F
410x4030001,NWZ-S736F
420x4030002,NWZ-S738F
430x4030004,NWZ-S739F
440x5000002,NW-X1040
450x5000004,NW-X1050
460x5000005,NW-X1060
470x5010002,NWZ-NONAME
480x5010004,NWZ-NONAME
490x5010005,NWZ-NONAME
500x5020002,NWZ-X1040
510x5020004,NWZ-X1050
520x5020005,NWZ-X1060
530x5040002,NWZ-X1041
540x5040004,NWZ-X1051
550x5040005,NWZ-X1061
560x6010002,NW-S644
570x6010004,NW-S645
580x6010005,NW-S646
590x6020002,NWZ-S744
600x6020004,NWZ-S745
610x6020005,NWZ-S746
620x6030002,NW-S744
630x6030004,NW-S745
640x6030005,NW-S746
650x7000004,NWZ-A845
660x7000005,NWZ-A846
670x7000006,NWZ-A847
680x7010004,NW-A845
690x7010005,NW-A846
700x7010006,NW-A847
710x9000002,NW-S754
720x9000004,NW-S755
730x9000005,NW-S756
740x8000000,NW-E052
750x8000001,NW-E053
760x8000002,NW-E054
770xb000001,NWZ-E453
780xb000002,NWZ-E454
790xb000004,NWZ-E455
800xc000001,NWZ-E353
810xc000002,NWZ-E354
820xc000004,NWZ-E355
830xd000001,NWZ-E553
840xd000002,NWZ-E554
850xd000004,NWZ-E555
860xd000005,NWZ-E556
870xe000004,NWZ-A855
880xe000005,NWZ-A856
890xe000006,NWZ-A857
900xf000002,NWZ-S754
910xf000004,NWZ-S755
920x10000000,NWZ-E052
930x10000001,NWZ-E053
940x11000001,NW-A863
950x11000002,NW-A864
960x11000004,NW-A865
970x11000005,NW-A866
980x11000006,NW-A867
990x11010001,NWZ-A863
1000x11010002,NWZ-A864
1010x11010004,NWZ-A865
1020x11010005,NWZ-A866
1030x11010006,NWZ-A867
1040x11020001,NWZ-A863
1050x11020002,NWZ-A864
1060x11020004,NWZ-A865
1070x11020005,NWZ-A866
1080x11020006,NWZ-A867
1090x12000001,NW-S763
1100x12000002,NW-S764
1110x12000004,NW-S765
1120x12000005,NW-S766
1130x12000006,NW-S767
1140x12010001,NWZ-S763
1150x12010002,NWZ-S764
1160x12010004,NWZ-S765
1170x12010005,NWZ-S766
1180x12010006,NWZ-S767
1190x13000001,NWZ-E463
1200x13000002,NWZ-E464
1210x13000004,NWZ-E465
1220x14000000,NW-E062
1230x14000001,NW-E063
1240x14000002,NW-E064
1250x14000004,NW-E065
1260x14000005,NW-E066
1270x15000001,NWZ-E473
1280x15000002,NWZ-E474
1290x15000004,NWZ-E475
1300x15000005,NWZ-E476
1310x15010001,NWZ-E573
1320x15010002,NWZ-E574
1330x15010004,NWZ-E575
1340x15010005,NWZ-E576
1350x16000001,NW-S773
1360x16000002,NW-S774
1370x16000004,NW-S775
1380x16000005,NW-S776
1390x16010001,NWZ-S773
1400x16010002,NWZ-S774
1410x16010004,NWZ-S775
1420x16010005,NWZ-S776
1430x19000001,NW-S783
1440x19000002,NW-S784
1450x19000004,NW-S785
1460x19000005,NW-S786
1470x19010001,NW-E083
1480x19010002,NW-E084
1490x19010004,NW-E085
1500x19010005,NW-E086
1510x19020001,NWZ-E583
1520x19020002,NWZ-E584
1530x19020004,NWZ-E585
1540x19020005,NWZ-E586
1550x1a000001,NW-A13
1560x1a000002,NW-A14
1570x1a000004,NW-A15
1580x1a000005,NW-A16
1590x1a000006,NW-A17
1600x1a010001,NWZ-A13
1610x1a010002,NWZ-A14
1620x1a010004,NWZ-A15
1630x1a010005,NWZ-A16
1640x1a010006,NWZ-A17
1650x1b000001,NW-S13
1660x1b000002,NW-S14
1670x1b000004,NW-S15
1680x1b000005,NW-S16
1690x1b000006,NW-S17
1700x1c000001,NW-ZX103
1710x1c000002,NW-ZX104
1720x1c000004,NW-ZX105
1730x1c000005,NW-ZX106
1740x1c000006,NW-ZX107
1750x1c000007,NW-ZX100
1760x1d000001,NW-A23
1770x1d000002,NW-A24
1780x1d000004,NW-A25
1790x1d000005,NW-A26
1800x1d000006,NW-A27
1810x1d000007,NW-A28