Hacking devices can/will void your warranty and can turn your expensive consumer electronics into worthless trash if you don't know what you're doing. This blog is for information purposes only, and if you try to hack into your own consumer electronics, you do so at your own risk. The device I'm currently hacking is the Canon SX10 IS camera.

Tuesday, January 13, 2009

Fun with the player

Tried a few things tonight. I plugged in a keyboard into the player to see if it supported one right out of the box. Unfortunately, it does not. So I'd have to get a keyboard driver loaded on it.

I also played around with the DvdPlayer part of the OS.

it is located in /usr/local/bin. I believe it automatically starts from the rcS located in the /usr/local directory, although I haven't experimented with that to see if it was the case.

You can stop the current one by typing stopall. It will terminate the RootApp and the DvdPlayer.

So I tried putting in a DvdPlayer from an Emtec player. Copied both the DvdPlayer and the Resource directory. Unfortunately, it wasn't able to boot it. In fact, it even stopped responding to telnet, so I had to use my System Recovery CD to mount the directory and put things back. Oh well.

Now, something really fun to do is to do the stopall, and then start up the DvdPlayer again. You do it by typing, from the /usr/local/bin directory:
./DvdPlayer -l on -o /var/log/dvdplayer/user_input
Now it will launch the Dvdplayer and dump the stdout and stderr to your telnet session. And the information it reports back is very useful...

for instance, it starts off:

Livepause not stop correctly last time
"umount /usr/local/etc/hdd/livepause" failed. The partition "may" not be mounted.

-->There is further mention of the livepause later on. it is possible that with 6 partitions, this drive might support livepause. Continuing with the log:

trying to change type of multiple extents
info, udhcpc (v0.9.9-pre) started
CMD: mkdir -p /tmp/netb/smb
In my system...
CMD: mkdir -p /tmp/smb
In my system...
CMD: ifconfig > /tmp/netb/samba_my_ip
In my system...
GrandMa Revision: 131384
(User Input)Pipe Created.
(Internal Event)Pipe Created.
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
tandy: AbstractAP::Init, startMode=0
command: rm /tmp/hddmedia
In my system...
command: ln -s /usr/local/etc/hdd/volumes/HDD1 /tmp/hddmedia
In my system...
pli initialization...
free [0] address 0x42000000, size = -16777216 to Cache
free [1] address 0x43800000, size = -2097152 to Cache
free [2] address 0x43a00000, size = -1638400 to Cache
In my system...
In my system...
[udf check done]
In my system...
Video DebugMem Physical Address = 0xa9ea00
MEMCache Hit [0]! size = 16777216, address = 0x42000000
tandy: lba 14,ariid=
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
tandy: ARI_EE_VIDEO_ASPECTRATIO=2
tandy: ARI_EE_VIDEO_BRIGHT=25
tandy: ARI_EE_VIDEO_CONTRAST=35
tandy: ARI_EE_VIDEO_TVSYSTEM=5
tandy: ARI_EE_VIDEO_TVSTANDARD=0
tandy: etho enable, static=0
[HDMI]: Set AVMute
[HDMI] setHDMIPscan(456) HDMIPscan = 1
tandy bright=32
tandy contrast=32
MIN_TILE_HEIGHT 32
pli_allocGraphic 2097152 bytes, Old priority = 0
pli 1st allocated virt addr = 47000000, phy addr = 3000000 , end addr = 47120000
MIN_TILE_HEIGHT 32
pli 1st allocated virt addr = 470d8000, phy addr = 30d8000 , end addr = 471f8000
MIN_TILE_HEIGHT 32
pli_allocGraphic 884736 bytes, Old priority = 0
pli 1st allocated virt addr = 47200000, phy addr = 3200000 , end addr = 47320000
MIN_TILE_HEIGHT 32
pli_allocGraphic 442368 bytes, Old priority = 0
pli 1st allocated virt addr = 47300000, phy addr = 3300000 , end addr = 47390000
MIN_TILE_HEIGHT 32
pli 1st allocated virt addr = 471b0000, phy addr = 31b0000 , end addr = 47210000
MIN_TILE_HEIGHT 32
pli_allocGraphic 196608 bytes, Old priority = 0
pli 1st allocated virt addr = 47380000, phy addr = 3380000 , end addr = 473c0000
MIN_TILE_HEIGHT 32
pli_allocGraphic 147456 bytes, Old priority = 0
pli 1st allocated virt addr = 473c0000, phy addr = 33c0000 , end addr = 473f0000
[HDMI] setHDMIAudioVideoFormat(230) HDMI EDID table isn't ready !!!
MIN_TILE_HEIGHT 32
pli_allocGraphic 262144 bytes, Old priority = 0
pli 1st allocated virt addr = 47400000, phy addr = 3400000 , end addr = 47440000

-->I think this might be telling me the address of the graphic buffers. The EDID is a documented structure that the HDMI TV reports.

IN : /tmp/ramfs/usb/livepause
IN : /tmp/ramfs/usb/rec
tandy: abstractap: start to activate the gudie ap
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
tandy: AbstractAp, GetInitialFlag 1
IN : /tmp/net
Create /tmp/net Ok!!!
In my system...
In my system...
In my system...
wait wlan0!!0
lock success
I locked the file
I locked the file
release success
lock success
I locked the file
I locked the file
release success
lock success
I locked the file
I locked the file
release success
GetDeviceUp 0 flag : 0x1043
SetupClass::GetInstance()->GetNetEth0DHCPEnable() = 1
In my system...
lock success
I locked the file
I locked the file
release success
lock success
I locked the file
I locked the file
release success
lock success
I locked the file
I locked the file
release success
lock success
I locked the file
I locked the file
release success
In my system...

0 usb block device found
No Recording Partition Available !!!!!!
No Timeshift Partition Available !!!!!!

-->More mention of the livepause (timeshift) system... very intriguing. Would it do livepause if it had the partition available? I wonder...

DNS IP : 127. 0. 0. 1
/bin/echo nameserver 127.0.0.1 >> /etc/resolv.conf
In my system...
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
Click eth0 DHCP IP and DNS
In my system...
In my system...
DNS IP : 127. 0. 0. 1
/bin/echo nameserver 127.0.0.1 >> /etc/resolv.conf
[HDMI] HDMI_thread(40) start !!!!0529 PVR
[HDMI]: Disable HDCP
[HDMI] setHDCPEnabled(1854) HDCPEnabled = 0
[HDMI]: Set AVMute
[HDMI] Hotplug Change !!! -1 -> 1
[HDMI] init_HDMI_EDID_data !!!
[HDMI] setHDMIPscan(456) HDMIPscan = 100
[HDMI] setHDMIPscan(456) HDMIPscan = 1
[HDMI]: HDCP_Authenticate HDCPOper_state=0xtandy: discovery: bind fail
Running non-bridged mode...
debug, Sending discover...
debug, Sending select for 192.168.42.5...
info, Lease of 192.168.42.5 obtained, lease time -1
1
[HDMI]: HDCP_Authenticate HDCPOper_state=0x2

[HDMI]: Start HDCP Authentication. t=1231876062593
tandy: AbstractAP::Init 1
IP : 192. 168. 42. 5
ioctl error: No such device
In my system...
wait wlan0!!1
tandy: eth0 alive, start eth0 discovery daemon
lock success
I locked the file
I locked the file
release success
tandy: guideap,CMD_USB_UPDATED, don't care
Key processed.
[HDMI]: Tx Reads EDID from Rx.
[HDMI] setDVIMonitor(1865) DVIMonitor = 0
0x00 0xff 0xff 0xff 0xff 0xff 0xff 0x00 0x6a 0x4e 0x94 0x02 0x01 0x00 0x00 0x00
0x00 0x0f 0x01 0x03 0x80 0x40 0x24 0x00 0x0a 0x92 0x03 0xa2 0x56 0x48 0x99 0x25
0x14 0x4a 0x4d 0x21 0x08 0x00 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x1d 0x80 0x18 0x71 0x1c 0x16 0x20 0x58 0x2c
0x25 0x00 0xf4 0x19 0x11 0x00 0x00 0x9e 0x01 0x1d 0x00 0x72 0x51 0xd0 0x1e 0x20
0x6e 0x28 0x55 0x00 0xf4 0x19 0x11 0x00 0x00 0x1e 0x00 0x00 0x00 0xfc 0x00 0x5a
0x4f 0x52 0x41 0x4e 0x20 0x48 0x44 0x4d 0x49 0x20 0x54 0x56 0x00 0x00 0x00 0xfd
0x00 0x3b 0x3d 0x0f 0x3c 0x0c 0x00 0x0a 0x20 0x20 0x20 0x20 0x20 0x20 0x01 0x22
0x02 0x03 0x18 0x71 0x45 0x07 0x02 0x03 0x04 0x05 0x26 0x09 0x07 0x07 0x15 0x07
0x50 0x66 0x03 0x0c 0x00 0x10 0x00 0x80 0x8c 0x0a 0xa0 0x14 0x51 0xf0 0x16 0x00
0x26 0x7c 0x43 0x00 0xf4 0x19 0x11 0x00 0x00 0x98 0x8c 0x0a 0xd0 0x8a 0x20 0xe0
0x2d 0x10 0x10 0x3e 0x96 0x00 0x90 0x2d 0x11 0x00 0x00 0x18 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x37

HDMI_EDID.tag = 2
HDMI_EDID.revision = 3
HDMI_EDID.offset = 24
HDMI_EDID.bUnderScan = 0
HDMI_EDID.bBasicAudio = 1
HDMI_EDID.YCBCR444 = 1
HDMI_EDID.YCBCR422 = 1
HDMI_EDID.native_format_number = 1
data_block_collection_length = 0x14, VideoTagCode(ptr) = 0x01
HDMI_EDID.VDB_length = 0x05
HDMI_EDID.VDB[0] = 0x07
HDMI_EDID.VDB[1] = 0x02
HDMI_EDID.VDB[2] = 0x03
HDMI_EDID.VDB[3] = 0x04
HDMI_EDID.VDB[4] = 0x05
data_block_collection_length = 0xe, AudioTagCode(ptr) = 0x01
HDMI_EDID.ADB_length = 0x02
(HDMI_EDID.ADB + 0)->coding_type = 0x01
(HDMI_EDID.ADB + 0)->channel_count = 0x01
(HDMI_EDID.ADB + 0)->sample_freq_all = 0x07
(HDMI_EDID.ADB + 0)->sample_size_all = 0x07
(HDMI_EDID.ADB + 0)->max_bit_rate_divided_by_8KHz = 0x00
(HDMI_EDID.ADB + 1)->coding_type = 0x02
(HDMI_EDID.ADB + 1)->channel_count = 0x05
(HDMI_EDID.ADB + 1)->sample_freq_all = 0x07
(HDMI_EDID.ADB + 1)->sample_size_all = 0x00
(HDMI_EDID.ADB + 1)->max_bit_rate_divided_by_8KHz = 0x50
[HDMI]: Pass ADB data to audio firmware.................
[HDMI]: Copy HDMI AUDIO data to physical addr(uncacheable addr)
[HDMI]: ADB[0] = 0x26
[HDMI]: ADB[1] = 0x9
[HDMI]: ADB[2] = 0x7
[HDMI]: ADB[3] = 0x7
data_block_collection_length = 0x7, SpeakerAllocationTagCode(ptr) = 0x00
data_block_collection_length = 0x7, VendorSpecificTagCode(ptr) = 0x01
HDMI_EDID.VSDB_length = 0x06
HDMI_EDID.VSDB[0] = 0x03
HDMI_EDID.VSDB[1] = 0x0c
HDMI_EDID.VSDB[2] = 0x00
HDMI_EDID.VSDB[3] = 0x10
HDMI_EDID.VSDB[4] = 0x00
HDMI_EDID.VSDB[5] = 0x80
data_block_collection_length = 0x0, ReservedTagCode(ptr) = 0x00
data_block_collection_length = 0x0, Reserved_6TagCode(ptr) = 0x00
data_block_collection_length = 0x0, VESA_DTC_DataTagCode(ptr) = 0x00
data_block_collection_length = 0x0, UseExtendedTagCode(ptr) = 0x00
HDMI_EDID.native_format_number = 0x01
HDMI_EDID.native_format[0] = 0x8c
HDMI_EDID.native_format[1] = 0x0a
HDMI_EDID.native_format[2] = 0xa0
HDMI_EDID.native_format[3] = 0x14
HDMI_EDID.native_format[4] = 0x51
HDMI_EDID.native_format[5] = 0xf0
HDMI_EDID.native_format[6] = 0x16
HDMI_EDID.native_format[7] = 0x00
HDMI_EDID.native_format[8] = 0x26
HDMI_EDID.native_format[9] = 0x7c
HDMI_EDID.native_format[10] = 0x43
HDMI_EDID.native_format[11] = 0x00
HDMI_EDID.native_format[12] = 0xf4
HDMI_EDID.native_format[13] = 0x19
HDMI_EDID.native_format[14] = 0x11
HDMI_EDID.native_format[15] = 0x00
HDMI_EDID.native_format[deleting routers
adding dns 192.168.42.127
16] = 0x00
HDMI_EDID.native_format[17] = 0x98
[HDMI] HDMI_GetCurrentVid(1037) HDMI_Video_List_Index 19
[HDMI] HDMI_GetCurrentVid(1038) HDMI_Video_Info_Index 11
[HDMI] HDMI_GetCurrentVid(1039) HDMI_EDID_VDB_Index 4
[HDMI] i 19 - HDMI_Video_List[i] 5
[HDMI] HDMI_GetNextVideoListIndex 20
[HDMI] HDMI_thread(135) call setHDMIAudioVideoFormat()
[HDMI] HDMI_GetCurrentVid(1037) HDMI_Video_List_Index 19
[HDMI] HDMI_GetCurrentVid(1038) HDMI_Video_Info_Index 11
[HDMI] HDMI_GetCurrentVid(1039) HDMI_EDID_VDB_Index 4
[HDMI] setHDMIPscan(456) HDMIPscan = 2
[HDMI] set setHDMIPSCANFlag = 1
[HDMI] VID = 0x5 1080i 60Hz
[HDMI] VIDEO type = 0x08
[HDMI] VIDEO HDMI_Sd_Hd = 0xa8
[HDMI] VIDEO Vid = 0x05
[HDMI] VIDEO RGB_or_YCbCr = 0x00
[HDMI] VIDEO PixelRepeat = 0x00
[HDMI] check EDID structure !!!!
[HDMI] HDMI_AudioCurrentIndex = 0
[HDMI] AUDIO use Input_I2S !!!!
[HDMI]: Turn on HDMI................... 1 s_freq=3 c_cnt=2 t=1231876063066
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
[HDMI]: Clear AVMute
[HDMI]: Turn on HDMI AUDIO
[HDMI]: Clear HDMI Audio Mute(Turn on AUDIO)
[HDMI]: Send_AudioMute() Ok, argp.hdmi_mute=0
[HDMI]: HDMISwitchTVSystem SP t=1231876063377

[HDMI] AUDIO HDMI_AudioInMode = 0x01
[HDMI] AUDIO HDMI_LocalInfo.coding_type = 0x01
[HDMI] AUDIO HDMI_LocalInfo.channel_count = 0x01
[HDMI] AUDIO HDMI_LocalInfo.sample_freq = 0x03
[HDMI] AUDIO HDMI_LocalInfo.sample_size = 0x03
[HDMI] AUDIO HDMI_LocalInfo.max_bit_rate_divided_by_8KHz = 0x00
[HDMI]: HDCP_Authenticate HDCPOper_state=0x3
[HDMI]: HDCP_Authenticate HDCPOper_state=0x4
[HDMI]: HDCP_Authenticate HDCPOper_state=0x5
[HDMI]: HDCP_Authenticate HDCPOper_state=0x6
[HDMI]: HDCP_Authenticate HDCPOper_state=0x9
[HDMI]: HDCP_Authenticate HDCPOper_state=0x7
[HDMI]: HDMI HDCP Authenticated t=1231876063378
wait wlan0!!2
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!3
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!4
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!5
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!6
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
lock success
I locked the file
I locked the file
release success
wait wlan0!!7
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!8
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!9
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!10
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
wait wlan0!!11
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
lock success
I locked the file
I locked the file
release success
wait wlan0!!12
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
o
tandy: GuideAP: CMD_POWER
[VIN] VIN_RPC_TVD_TOAGENT_VBI_CTRL, hr != S_OK !!!!!!!!!!!!
[AIN] AIN_RPC_TOAGENT_CREATE_0 send successful
wait wlan0!!13
start ao rpc config
start ao rpc config spdif
[AIN] InitializeInputStatus 1 1 0
[VE] RPC_EN_TOAGENT_ENC_INIT, format: 1, source: 0, hr = S_OK
Input Pin not connected while pause
[AE] RPC_TOAGENT_CREATE, hr = S_OK, agentID: 48
************** connect
[AIN] RPC_CONNECT to AO, 32 0 5 0
[AIN] RPC_CONNECT, hr = S_OK
[AIN] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, numOfReadPtr: 1, listSize: 4
[AIN] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, hr = S_OK
[AE] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, input pin, listSize: 4, header: 7ff9c618
[AE] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, hr = S_OK
[AIN] RPC_CONNECT to AE, 48 0 5 2
[AIN] RPC_CONNECT, hr = S_OK
[AIN] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, numOfReadPtr: 2, listSize: 4
[AIN] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, hr = S_OK
[VE] RPC_TOAGENT_INITRINGBUFFER, header: dc460, hr = S_OK
[VE] RPC_TOAGENT_INITRINGBUFFER, header: dc4e0, hr = S_OK
[AE] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, out pin, listSize: 1
[AE] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, hr = S_OK
[AE] msg ring buf m_pMsgRingLower: 4bd40000, m_pMsgRingUpper: 4bd48000
[AE] AUDIO_RPC_TOAGENT_INITRINGBUFFERHEADER, hr = S_OK
[VE] RPC_TOAGENT_INITRINGBUFFER, header: dc560, hr = S_OK
[VE] RPC_EN_TOAGENT_SETTF, 1 1, hr = S_OK
[VE] RPC_EN_TOAGENT_SETNR, 3 3, hr = S_OK
[VE] RPC_EN_TOAGENT_SETENCODEFORMAT, 1, hr = S_OK
[VE] RPC_EN_TOAGENT_SETRESOLUTION, hres: 720, SIF: 0, hr = S_OK
[VE] RPC_EN_TOAGENT_SETBITRATE, hr = S_OK
[VE] RPC_EN_TOAGENT_SETGOPSTRUCTURE, M: 3, N: 12, hr = S_OK
[VE] RPC_EN_TOAGENT_CONFIGVOBU, 1, hr = S_OK
[VIN] VIN_RPC_TVD_TOAGENT_TVD_CONFIGURE, hr = S_OK
[VE] RPC_EN_TOAGENT_SETTF, 0 0, hr = S_OK
[VE] RPC_EN_TOAGENT_SETNR, 0 0, hr = S_OK
[AIN] AIN_RPC_TOAGENT_TSD_CONFIG: 0......
[AIN] AIN_RPC_TOAGENT_TSD_CONFIG, hr = S_OK
[AE] AUDIO_RPC_TOAGENT_PAUSE
[AE] AUDIO_RPC_TOAGENT_PAUSE, hr = S_OK
[VE] RPC_TOAGENT_PAUSE....
[VE] RPC_TOAGENT_PAUSE, hr = S_OK
*** aout pause
[AIN] ADC0_Config: 1 15 0 0, 48000 16
[AIN] ADC0_Config, hr = S_OK
[AIN] ADC1_Config: 1 15 0 0, 48000 16
[AIN] ADC1_Config, hr = S_OK
[AE] AUDIO_RPC_TOAGENT_RUN...
[AE] AUDIO_RPC_TOAGENT_RUN, hr = S_OK
[VE] RPC_TOAGENT_RUN....
MEMCache Hit [2]! size = 1638400, address = 0x43a00000
[VE] RPC_TOAGENT_RUN, hr = S_OK
[AIN] AUDIO_RPC_TOAGENT_RUN
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
[AIN] AUDIO_RPC_TOAGENT_RUN, hr = S_OK
[AIN] AIN_RPC_TOAGENT_MUTE: 1......
[AIN] AIN_RPC_TOAGENT_MUTE, hr = S_OK
[VIN] VIN_RPC_TVD_TOAGENT_TVD_CONFIGURE, hr = S_OK
[AIN] AIN_RPC_TOAGENT_SWITCH_FOCUS: 0......
[AIN] AIN_RPC_TOAGENT_SWITCH_FOCUS, hr = S_OK
Key processed.
lock success
I locked the file
I locked the file
release success
lock success
I locked the file
I locked the file
release success


-->Somewhere around here, I told it to shut down (not using standby or the power button...read on to see how)

[VE] status: (3, 1, 0, 0, 3)
[VE] notify FE_RECORD_NOSIGNAL
[AE] AUDIO_RPC_TOAGENT_PAUSE
[AE] AUDIO_RPC_TOAGENT_PAUSE, hr = S_OK
[VE] RPC_TOAGENT_PAUSE....
[VE] RPC_TOAGENT_PAUSE, hr = S_OK
state force paused
[AE] AUDIO_RPC_TOAGENT_STOP
[AE] AUDIO_RPC_TOAGENT_STOP, hr = S_OK
AUDIO_RPC_ToSystem_HDMI_Setting_0_svc(546) prio_process = 0
[HDMI]: AUDIO parameters are the same, no need to setup again.
wait wlan0!!14
free [2] address 0x43a00000, size = -1638400 to Cache
[VE] RPC_TOAGENT_STOP, hr = S_OK
state force stoped
[AIN] AUDIO_RPC_TOAGENT_STOP
[AIN] AUDIO_RPC_TOAGENT_STOP, hr = S_OK
MediaLoaderThread stopped

!!!!!!!!!!!!!!!!!!! CMD_TERMINATE received

lock success
I locked the file
I locked the file
release success
lock success
I locked the file
I locked the file
release success
Free Graphic 0x47000000
Free Graphic 0x473c0000
Free Graphic 0x47300000
Free Graphic 0x47380000
error in pli_freeContinuousMemory()...
error in pli_freeContinuousMemory()...
In my system...
MediaServer.cpp , 431 bind local IP fail 0 !!error = Address already in use
free [0] address 0x42000000, size = -16777216 to Cache
wait wlan0!!15
Entering Suspend Mode ..
SYSTEM STANDBY MODElock success
I locked the file
I locked the file
release success
Schedule is off.
Delete Network
In my system...


Something else I found was that I could control the DvdPlayer from my keyboard in this mode. These are the keys that did something that I could determine. I know there are some missing because the DVD Player wouldn't allow certain operations at that time. For instance, I can't seem to find a video with multiple angles, but I'm sure one of these keystrokes is the angle button. Update: Post on emtec reveals that e is the angle button.

a - audio button
b - takes you into the recording setup screen
c - delete schedule when in recording, otherwise doesn't appear to do anything
e - angle (reported by other users, not verified)
f - reverse play <<
j - reverse zoom (starts at max zoom and goes back to 1)
l - slow play reverse
m - mute on/off
n - skip to next title (not chapter)
o - Shut down quickly
p - skip to prior title (not chapter)
q - go back 10 SECONDS
r - start recording / switch to av
s - subtitle toggle
v - volume -
z - normal zoom

A - left
B - 30 Second Skip
C - Command Line interpreter, engineering mode, see below
D - right
E - Delete
F - Fast forward >>
G - Asks for GCode. Not sure what the GCode is. Tried a VCR+ code given the context, but the code I tried only crashed the player.
H - report some kind of status
L - slow play forward
M - Menu
N - Next chapter
O - shut down normally
P - Prior chapter
Q - Stop
S - Play
T- AV input screen
V - volume +
W - up
X - down
Z - Step / pause

- - goto
= - repeat a/b
+ - repeat button

# - go to USB screen
$ - go to SPP directory when on another source
& - graphical file copy, looks nice. Much better than the cut/copy/paste concept you can do from the remote.
( - start performance logging
) - stop performance logging
~ - memory allocation status
0-9 - same as entering 0-9. Jumps to title. I did not know you could jump to a specific title that way on this player, so something new.

[ - source button
] - In the menu, will go to the last source accessed.
{ - home button
, - return button
/ - go to setup menu
\ - switch tv system
: - switch tv system (not sure how it is different from \)

ESC - Go to setup menu
Spacebar - Select (this is what the play button on the remote maps to)


In engineering mode, you can type HELP and get this:

Engineering Mode Command List:
port: read or write value to specified address
setdebug: set audio/video debug flag
setbri : set Video In Brightness value (00~ff)
setcont : set Video In Contrast value (00~ff)
setsatu : set Video In Saturation value (00~ff)
sethue : set Video In Hue value (00~ff)
setscal : set the coefficients of VIN Scaling (0x10
00~0xFFFF)
setcolorm
: set VO hardware's Color Adjustment transformation matrix
copyfree: enable copy-free
netperf : Enable network performance meter. Use on or o
ff to tern on/off this feature
netperf nodecode, means streaming only withou
t decode.
setyc: set YC separation parameters [6 parameters]
| save: save setting
| load: load setting
| default: use factory default setting
| show: show current setting
shell: Unix Shell to execute unix command
kill: kill the program immediately (to generate coredump)
quit: quit from command line interpreter


So I'm thinking if I can grab the stdin of the DvdPlayer process, I could have another program control it. It could start the recording, for instance. Or it could automatically navigate, play certain files. In fact, some of the information coming back during DvdPlayer execution relates to the video/music/picture it is currently working on. And I would love to be able to map the 30 second skip command to a remote button...

13 comments:

  1. hi,
    can you please upload your rootapp and dvdplayer to rapidshare or anything else? I want to try your binary on my chiligreen media rekorder device, which seems to be the same as your iomega just without HDMI.
    or is it possible that you upload your whole system files? would be great to see if there are any differences (drives) to mine.
    thx,
    dominik

    ReplyDelete
  2. Dominik, I've been thinking about this a lot. The chiligreen is based on the 1261 chip, isn't it? If so, there really isn't any chance the Iomega firmware is going to work on it. Besides, I don't think you're going to get any actual benefit from having the iomega firmware. Yours is probably better.

    Nonetheless, iomega makes their firmware available. I have been working on extracting out the key pieces. Its not encoded, so I can distribute a program that can extract all of the pieces out. I've got the first level extracted, but now I need to get the img extracted. Working on it, will make it available when I finish it.

    ReplyDelete
  3. Just an update. I haven't been able to figure out the file structure of the resulting install.img file. Unfortunately, the file is not decipherable by the MHDWorld tool. It does not appear to be a squashfs filesystem, but it does appear to be some kind of filesystem. Tried several but couldn't match it to a type. Will try some more.

    ReplyDelete
  4. Hello,
    I just gave a look to upgrade.bin from IOmega.
    Starting from 8733205 (decimal) you'll find inside a .tar.bz2 tarball.
    # dd if=upgrade.bin of=upgrade.tar.bz2 bs=1 skip= 8733205
    should give you the tarball
    # # tar -xjvf upgrade.tar.bz2
    should give you its content.

    ReplyDelete
  5. sorry:
    correct starting point is 8733206 (decimal) 854216 (hex)

    ReplyDelete
  6. Hello,

    always me: I understood how is built upgrade.bin. I'll post soon other news.

    ReplyDelete
  7. Actually, the upgrade.bin breakdown is pretty easy. I wrote a small C program that breaks out the 8 files, including one called Install.img. But before I published it, I wanted to figure out the structure of the Install.img file.

    Looking for the magic number was a good idea. I used HxD to extract the .tar.bz2 file, and then WinRar to view it.

    ReplyDelete
  8. The install.img file structure is not all clear to me.
    Anyway, at the beginning of the file you find the header, inside it there is stored the length of the tarball in the usual way (bytes swapped).
    As I done in my emtec, you have just to extract the tarball, modify it, compress the tarball, raplace the new tarball in install.img and then fix the length in accordance to the new one. And, of course, rebuild the upgrade.bin (I havent' such file in my box).

    ReplyDelete
  9. Just an addendum: if you need a Linux-like environment for Windows (I use Win too.... no linux experiences before) you can install cygwin

    ReplyDelete
  10. Good work! yesterday I started playing with my new ScreenPlay. I'm considering hacking the player (or adding a web interface for controlling it) in order to have a "search" function (based on the find command of BusyBox).
    BTW, I've seen in a previous post that you had to connect the box to a linux system in order to alter files in the read-only partitions. This is not required, you can just type "mount -o remount -rw /" and then you can change password or edit files..

    ReplyDelete
  11. Franchino-Yes, I actually posted in November a smaller version and I've been using an even smaller version, just simply mount -o rw,remount / does it.

    ReplyDelete
  12. You might want to try the ipkg feed
    http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/unstable/
    on SPP. See
    http://www.nslu2-linux.org/wiki/Optware/HomePage
    on manual setup instruction. For this particular feed, install uclibc-opt_0.9.28-2_mipsel.ipk first to prevent potential lib incompatibility.

    ReplyDelete
  13. G-Code seems to be a VCR programming code wich is/was popular in Japan, China, New Zealand and Australia. At least, Wikipedia says so:
    http://en.wikipedia.org/wiki/Video_recorder_scheduling_code

    ReplyDelete