rockbox/utils/nwztools/database/models.txt

198 lines
3.7 KiB
Text
Raw Normal View History

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
2016-11-11 14:40:56 +00:00
0x10000,NWZ-A815
0x10001,NWZ-A816
0x10002,NWZ-A818
0x1000000,NW-S615F
0x1000001,NW-S616F
0x1010000,NW-S715F
0x1010001,NW-S716F
0x1010002,NW-S718F
0x1020000,NWZ-S615F
0x1020001,NWZ-S616F
0x1020002,NWZ-S618F
0x1030000,NWZ-S515
0x1030001,NWZ-S516
0x1040000,NWZ-S715F
0x1040001,NWZ-S716F
0x1040002,NWZ-S718F
0x2000001,NW-A916
0x2000002,NW-A918
0x2000004,NW-A919
0x3000001,NWZ-A826
0x3000002,NWZ-A828
0x3000004,NWZ-A829
0x3010001,NW-A826
0x3010002,NW-A828
0x3010004,NW-A829
0x3020001,NWZ-A726B
0x3020002,NWZ-A728B
0x3020004,NWZ-A729B
0x3030001,NWZ-A726
0x3030002,NWZ-A728
0x3030004,NWZ-A729
0x4000001,NW-S636F
0x4000002,NW-S638F
0x4000004,NW-S639F
0x4010001,NW-S736F
0x4010002,NW-S738F
0x4010004,NW-S739F
0x4020001,NWZ-S636F
0x4020002,NWZ-S638F
0x4020004,NWZ-S639F
0x4030001,NWZ-S736F
0x4030002,NWZ-S738F
0x4030004,NWZ-S739F
0x5000002,NW-X1040
0x5000004,NW-X1050
0x5000005,NW-X1060
0x5010002,NWZ-NONAME
0x5010004,NWZ-NONAME
0x5010005,NWZ-NONAME
0x5020002,NWZ-X1040
0x5020004,NWZ-X1050
0x5020005,NWZ-X1060
0x5040002,NWZ-X1041
0x5040004,NWZ-X1051
0x5040005,NWZ-X1061
0x6010002,NW-S644
0x6010004,NW-S645
0x6010005,NW-S646
0x6020002,NWZ-S744
0x6020004,NWZ-S745
0x6020005,NWZ-S746
0x6030002,NW-S744
0x6030004,NW-S745
0x6030005,NW-S746
0x7000002,NWZ-A844
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
2016-11-11 14:40:56 +00:00
0x7000004,NWZ-A845
0x7000005,NWZ-A846
0x7000006,NWZ-A847
0x7010004,NW-A845
0x7010005,NW-A846
0x7010006,NW-A847
0x9000002,NW-S754
0x9000004,NW-S755
0x9000005,NW-S756
0x8000000,NW-E052
0x8000001,NW-E053
0x8000002,NW-E054
0xb000001,NWZ-E453
0xb000002,NWZ-E454
0xb000004,NWZ-E455
0xc000001,NWZ-E353
0xc000002,NWZ-E354
0xc000004,NWZ-E355
0xd000001,NWZ-E553
0xd000002,NWZ-E554
0xd000004,NWZ-E555
0xd000005,NWZ-E556
0xe000004,NWZ-A855
0xe000005,NWZ-A856
0xe000006,NWZ-A857
0xf000002,NWZ-S754
0xf000004,NWZ-S755
0x10000000,NWZ-E052
0x10000001,NWZ-E053
0x11000001,NW-A863
0x11000002,NW-A864
0x11000004,NW-A865
0x11000005,NW-A866
0x11000006,NW-A867
0x11010001,NWZ-A863
0x11010002,NWZ-A864
0x11010004,NWZ-A865
0x11010005,NWZ-A866
0x11010006,NWZ-A867
0x11020001,NWZ-A863
0x11020002,NWZ-A864
0x11020004,NWZ-A865
0x11020005,NWZ-A866
0x11020006,NWZ-A867
0x12000001,NW-S763
0x12000002,NW-S764
0x12000004,NW-S765
0x12000005,NW-S766
0x12000006,NW-S767
0x12010001,NWZ-S763
0x12010002,NWZ-S764
0x12010004,NWZ-S765
0x12010005,NWZ-S766
0x12010006,NWZ-S767
0x13000001,NWZ-E463
0x13000002,NWZ-E464
0x13000004,NWZ-E465
0x14000000,NW-E062
0x14000001,NW-E063
0x14000002,NW-E064
0x14000004,NW-E065
0x14000005,NW-E066
0x15000001,NWZ-E473
0x15000002,NWZ-E474
0x15000004,NWZ-E475
0x15000005,NWZ-E476
0x15010001,NWZ-E573
0x15010002,NWZ-E574
0x15010004,NWZ-E575
0x15010005,NWZ-E576
0x16000001,NW-S773
0x16000002,NW-S774
0x16000004,NW-S775
0x16000005,NW-S776
0x16010001,NWZ-S773
0x16010002,NWZ-S774
0x16010004,NWZ-S775
0x16010005,NWZ-S776
0x19000001,NW-S783
0x19000002,NW-S784
0x19000004,NW-S785
0x19000005,NW-S786
0x19010001,NW-E083
0x19010002,NW-E084
0x19010004,NW-E085
0x19010005,NW-E086
0x19020001,NWZ-E583
0x19020002,NWZ-E584
0x19020004,NWZ-E585
0x19020005,NWZ-E586
0x1a000001,NW-A13
0x1a000002,NW-A14
0x1a000004,NW-A15
0x1a000005,NW-A16
0x1a000006,NW-A17
0x1a010001,NWZ-A13
0x1a010002,NWZ-A14
0x1a010004,NWZ-A15
0x1a010005,NWZ-A16
0x1a010006,NWZ-A17
0x1b000001,NW-S13
0x1b000002,NW-S14
0x1b000004,NW-S15
0x1b000005,NW-S16
0x1b000006,NW-S17
0x1c000001,NW-ZX103
0x1c000002,NW-ZX104
0x1c000004,NW-ZX105
0x1c000005,NW-ZX106
0x1c000006,NW-ZX107
0x1c000007,NW-ZX100
0x1d000001,NW-A23
0x1d000002,NW-A24
0x1d000004,NW-A25
0x1d000005,NW-A26
0x1d000006,NW-A27
0x1d000007,NW-A28
0x20000007,NW-WM1A
0x21000008,NW-WM1Z
0x22000004,NW-A35
0x22000005,NW-A36
0x22000006,NW-A37
0x23000004,NW-ZX300A
0x23000006,NW-ZX300
0x24000004,NW-A45
0x24000005,NW-A46
0x24000006,NW-A47
0x25000004,NW-A55
0x25000005,NW-A56
0x25000006,NW-A57
0x23000007,NW-ZX300
0x26000008,DMP-Z1