Friday, December 07, 2012

A look inside the BDP-150 Frimware, netflix_qt you say?

In my previous post, I showed the basic contents of the Pioneer BDP-150 firmware image.

Looking at the binwalk output listing we can easily find the boot loader, Linux kernel and a squashfs image.

461744     0x70BB0    uImage header, header size: 64 bytes, header CRC: 0x775F4C1C, created: Wed Oct 24 10:43:23 2012, image size: 1573204 bytes, Data Address: 0xDA00000, Entry Point: 0xDA00000, data CRC: 0x782925E7, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: none, image name: 
479272     0x75028    gzip compressed data, from Unix, last modified: Wed Oct 24 10:38:55 2012, max compression
2574912    0x274A40   Squashfs filesystem, little endian, version 3.1, size: 59779047 bytes, 471 inodes, blocksize: 131072 bytes, created: Wed Oct 24 10:51:11 2012

Extract the filesystem image with dd, like so:

$ dd if=BDP-150_V01.05.bin of=sqfs.img bs=2574912 skip=1
23+1 records in
23+1 records out
60048084 bytes (60 MB) copied, 1.03521 s, 58.0 MB/s

Now you have a Squashfs image. You can mount it or extract the contents using unsquashfs, like so:

$ unsquashfs sqfs.img 
Parallel unsquashfs: Using 4 processors
726 inodes (1492 blocks) to write

[===================================================================================================================================================================================/] 1492/1492 100%
created 330 files
created 63 directories
created 78 symlinks
created 0 devices
created 0 fifos

Now you have the firmware extracted and you can start looking around. There are some interesting looking bits in there. For example the UI is built on DirectFB and there is a Netflix binary (/usr/local/bin/netflix_qt/netflix ) linked against Qt. Pretty silly of Netflix not to support desktop linux users...

Who knows, with some luck this might run on some other ARM based thingy ? Oh, right.. that is the next thing I'll try :)

No comments: