Pioneer: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
== Pioneer == | |||
My old amp (home cinema audio system) died, so this gave me a chance to buy a new set. | |||
I bought the Pioneer MCS-434 - mainly as it was in the rough price bracket I was willing to | |||
pay for. (Ie, not too much). | |||
I don't care that it has a bluray player in it (but had no models without in the store) but | |||
that it could do UPNP Media devices was a nice surprise. | |||
I found it working rather well with llink. Some minor troubles. | |||
* trickplay, ie, fast-forward and chapter skip did not work. llink was not sending the full DLNA flags required. | |||
* ObjID has a maximum length of 64 chars. Even though the spec has no limit, clearly the Pioneer does. Use shorter paths. | |||
* Refreshing (adding, or removing contents from a directory) does not work right. | |||
The last issue is the only one I was unable to fix. The Pioneer subscribes to events in UPNP to be notified when | |||
ContainerID has been updated. llink informs it of that, and the Pioneer re-issues a listing, as you would expect. | |||
But what it asks for in the listing is only 1 item. Ie, '''StartingIndex=1, RequestedCount=1'''. And no sorting. | |||
After that, it just stops. It is confusing as to what it expects to get here. I have sent a whole new record, | |||
as well as updated timestamps etc. But it also fails to refresh against Windows Media Center, so I think it | |||
is just plain broken. | |||
I have attempted to contact Pioneer, and the developer of '''IPI/1.0 UPnP/1.0 DLNADOC/1.50''' but I have had no replies. | |||
So, attempting to gain access myself. | |||
=== Firmware === | |||
The first file of the firmware is quite straight forward: | |||
# binwalk MCS838_V00.38.bin | |||
DECIMAL HEX DESCRIPTION | |||
------------------------------------------------------------------------------------------------------- | |||
66580 0x10414 Mediatek bootloader | |||
119052 0x1D10C Mediatek bootloader | |||
425000 0x67C28 U-Boot boot loader reference{ | |||
521792 0x7F640 uImage header, header size: 64 bytes, header CRC: 0xAC601819, created: Mon Oct 7 01:20:36 2013, image size: 1815444 bytes, Data Address: 0x3A00000, Entry Point: 0x3A00000, data CRC: 0xAD70A84B, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: none, image name: "" | |||
539189 0x83A35 gzip compressed data, maximum compression, from Unix, last modified: Mon Oct 7 01:17:17 2013{file-epoch:1381076237} | |||
4265104 0x411490 Squashfs filesystem, little endian, version 4.0, compression:gzip, size: 65376434 bytes, {file-size:65376434} 1189 inodes, blocksize: 65536 bytes, created: Mon Oct 7 01:46:24 2013 { | |||
69772432 0x428A490 PNG image, 1920 x 1080, 8-bit/color RGB, non-interlaced | |||
69810320 0x4293890 PNG image, 720 x 480, 8-bit/color RGB, non-interlaced | |||
69834368 0x4299680 U-Boot boot loader reference{ | |||
Unpacking the squashfs, the bulk of the GUI code appears to be in; | |||
-rwxr-xr-x 1 lundman admin 20197340 Oct 7 01:45 usr/local/bin/bdpprog | |||
and it would appear that it has some sort of secret code, based on; | |||
g_onekey_secret_input | |||
g_onekey_load_secret_input | |||
g_onekey_sysinfo_secret_input | |||
open_telnet | |||
telnetd invoked ok | |||
telnetd invoked failed | |||
But IDA has not revealed anything that works. My best guess was | |||
g_onekey_load_secret_input DCD 0x20103 | |||
Ie, 0 2 1 3, at the place where it prints the mcu and dsp versions. But that alone does not appear to work. Also checks for 0x03010200 | |||
I could roll my own firmware file, with telnetd running, and figure out whatever checksums they might have, but not that much time. | |||
Preferably, Pioneer fixes the last issue and I don't have to do any of this :) |
Latest revision as of 08:23, 6 February 2014
Pioneer
My old amp (home cinema audio system) died, so this gave me a chance to buy a new set.
I bought the Pioneer MCS-434 - mainly as it was in the rough price bracket I was willing to pay for. (Ie, not too much).
I don't care that it has a bluray player in it (but had no models without in the store) but that it could do UPNP Media devices was a nice surprise.
I found it working rather well with llink. Some minor troubles.
- trickplay, ie, fast-forward and chapter skip did not work. llink was not sending the full DLNA flags required.
- ObjID has a maximum length of 64 chars. Even though the spec has no limit, clearly the Pioneer does. Use shorter paths.
- Refreshing (adding, or removing contents from a directory) does not work right.
The last issue is the only one I was unable to fix. The Pioneer subscribes to events in UPNP to be notified when ContainerID has been updated. llink informs it of that, and the Pioneer re-issues a listing, as you would expect.
But what it asks for in the listing is only 1 item. Ie, StartingIndex=1, RequestedCount=1. And no sorting. After that, it just stops. It is confusing as to what it expects to get here. I have sent a whole new record, as well as updated timestamps etc. But it also fails to refresh against Windows Media Center, so I think it is just plain broken.
I have attempted to contact Pioneer, and the developer of IPI/1.0 UPnP/1.0 DLNADOC/1.50 but I have had no replies.
So, attempting to gain access myself.
Firmware
The first file of the firmware is quite straight forward:
# binwalk MCS838_V00.38.bin DECIMAL HEX DESCRIPTION ------------------------------------------------------------------------------------------------------- 66580 0x10414 Mediatek bootloader 119052 0x1D10C Mediatek bootloader 425000 0x67C28 U-Boot boot loader reference{ 521792 0x7F640 uImage header, header size: 64 bytes, header CRC: 0xAC601819, created: Mon Oct 7 01:20:36 2013, image size: 1815444 bytes, Data Address: 0x3A00000, Entry Point: 0x3A00000, data CRC: 0xAD70A84B, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: none, image name: "" 539189 0x83A35 gzip compressed data, maximum compression, from Unix, last modified: Mon Oct 7 01:17:17 2013{file-epoch:1381076237} 4265104 0x411490 Squashfs filesystem, little endian, version 4.0, compression:gzip, size: 65376434 bytes, {file-size:65376434} 1189 inodes, blocksize: 65536 bytes, created: Mon Oct 7 01:46:24 2013 { 69772432 0x428A490 PNG image, 1920 x 1080, 8-bit/color RGB, non-interlaced 69810320 0x4293890 PNG image, 720 x 480, 8-bit/color RGB, non-interlaced 69834368 0x4299680 U-Boot boot loader reference{
Unpacking the squashfs, the bulk of the GUI code appears to be in;
-rwxr-xr-x 1 lundman admin 20197340 Oct 7 01:45 usr/local/bin/bdpprog
and it would appear that it has some sort of secret code, based on;
g_onekey_secret_input g_onekey_load_secret_input g_onekey_sysinfo_secret_input open_telnet telnetd invoked ok telnetd invoked failed
But IDA has not revealed anything that works. My best guess was
g_onekey_load_secret_input DCD 0x20103
Ie, 0 2 1 3, at the place where it prints the mcu and dsp versions. But that alone does not appear to work. Also checks for 0x03010200
I could roll my own firmware file, with telnetd running, and figure out whatever checksums they might have, but not that much time.
Preferably, Pioneer fixes the last issue and I don't have to do any of this :)