Xtreamer Linux Distribution
From Xtreamer
Artice writing discontinued
2010-02-13 I have stopped writing further notes to this wiki page. If you are interested go ahead, some information here may be outdated... best regards, nixda.
Foreword
The following informations base on the firmware 2.2.
Xtreamer comes with Realteks RTD1283DD chipset (Referred to as 128x by the official site) and Realtek offers a linux SDK for hardware vendors. It looks like this SDK is the base of the "linux kernel" used on the Xtreamer device.
Most of the software packages on similar Realtek based products may differ only in a few packages or builds however the latest SDK is still based on a rather old kernel (2.6.12). As this is a linux environment most of the packages are distibuted via the Xtreamer_Source-code releases. Poorly the details of the boot process and the core application and modules (DvdPlayer) are closed source. Some people are working on finding a way to create a boot manager, see the discussion in the xtreamer forum here.
The main user application, which supports the GUI, video playback and more is called DvdPlayer. There is a very interesting discussion about DvdPlayer in the forum! Maybe some day we will have the ability to build our own media player OS and research is continuing on this for all Realtek based media players
There is a lot of information available on the web discussing units like the Xtreamer. If I am right, then most of them (in this price class) are based on Sigma or Realtek chips. Last year in 2009 Realtek announced an award about their new HD Media chips RTL1073 and RTL1283 which also includes the same enhanced chip at the heart of the Xtreamer, the RTL1283DD (also referred to as RTL128X).
Although the announcement from Realtek talks about decoding and encoding for HD videos from the RTL1283 (PVR ability), at this time there are no devices using this chipset making use of this capability. So the Xtreamer is "just a media player". Disappointingly, Realtek has not released detailed specifications about these chips for us. Sigma takes a completely different approach and you will find a lot more information for their chips.
If we have a closer look at the Xtreamer and all these other similar boxes we find a very interesting playground for internet services working on this Linux OS. So this theme is the main intention of this article. We would like to give you detailed information about how the Xtreamer core software works - hopefully you will end up with a better understanding of the Linux OS and the proprietary DvdPlayer and how you can configure these, just so that you can have more control over it.
Two other very interesting parts you will find in other articles, the software and hardware development. In case of the software development you see that there are many very hard working people out there and they are often forced to find solutions without having access to useful information as Xtreamer themselves are restricted in the details that they can release due to there contractual arrangements with Realtek. This can slow if not stop development and as we continue to work with staff we hope that our work can help convince them to convince Realtek to allow more access to restricted code. The main missing parts may be header files, information about the bootloader and non-GPL code to control video and audio parts of the chip (The DvdPlayer component). You will find short notes and links about this at the chapter with the kernel below.
Some of the hesitation shown by Xtreamer can be linked to the fact that their efforts and innovation had previously led to all other Realtek based media player suppliers gaining from their effort without a reciprocal arrangement.
Security issues
WARNING ** WARNING ** WARNING
I would hardly recommend not to use the Xtreamer without any firewall connected to the internet! You do not need to "hack" into the xtreamer, it is completely open for root access. Since the Xtreamer - from the view of the software installation - is nothing else than any other linux server, this machine may be _the_ destination for hacker/spammers.
As a home media center it may be fine (you never need a password) how the Xtreamer is customized, but if you ever think about plugging it into a "real network" (means: other, untrusted persons are in the same network area) you need to know that your xtreamer is as open as possible. I will show you one demonstration of how this big "security hole" (let us call this a feature)... makes it "more easy" in home use:
On the xtreamer there is an public write access to a temp path or any other connected storages (usb sticks...) with root rights via samba. The configurations - in parts - looks like this:
[global]
...
guest account=root
...
[Xtreamer]
path=/tmp/usbmounts/
guest ok=yes
writable=yes
force create mode=0775
force directory mode=0775
So ok, just put your php code there... mount the cifs share //<the IP>/xtreamer without password as guest and for example place our hello.php there:
<?php
system("id");
?>
Now start your application: http://<the IP>/media/hello.php which prompts:
uid=0(root) gid=0(root)
So, you are all set. :) I would say there is no chance to open the Xtreamer up any more. That does not mean that we cannot hack into it... it is just as open as possible already!
Firmware issues
In this section we do not discuss how to mod, change and patch the Xtreamer. These questions may be answered in other pages. But I think it is good to know some few things about the firmware image file install.img in any case. I got the note to look into the following link HOWTO: Roll Your Own Firmware. There you find some useful information to pack your own, slightly modified firmware. Slightly modified means: Until now we speak about some changes in the packed data, apps, changed configs in the filesystem. But changing partition sizes (see Directory structure and filesystems) could be interesting, too. Changing the images for the audio and video enginge, changing the kernel is not well known or well tested right now. (outdated info: meanwhile we have or firmware with another kernel and changed partitin sizes...)
So if you follow the instructions of the link above you see that install.img is a tar file with some other packages and utils - This is slightly different with the Xtreamer which uses a file with a .xtr filetype. In a xml file we can decide which other yaffs packages should be mounted where and how big the partitions should be. The yaffs utilities allowing you to unpack and pack this yaffs images to put your data in there (f.e. adding sshd, changing the password file and so on). Like I said before: More about modding should be found and placed in other documents. Here we describe what we have, how the Xtreamer comes out of the box.
Directory structure and filesystems
mtdblock devices
One interesting thing is the mounted volume /dev/mtdblock/2 (yaffs) under /usr/local/etc looks like it will not erased during a firmware flash. It is a 16MB large part of the FLASH on the xtreamers NAND flash. You will find some informations for example in the wikipedia.org at YAFFS.
Besides the /dev/mtdblock/2 there are 4 other mtdblock devices:
- /dev/mtdblock/0 seems to be empty (says ls) but df means it is not. Maybe the audio and video fw resists there.
- /dev/mtdblock/1 has the same contet as our root filesystem
- /dev/mtdblock/2 is the one mounted under /usr/local/etc
- /dev/mtdblock/3 seems to be...
- /dev/mtdblock/disc seems to be the whole flash
So if you mount them by hand you see these sizes:
/dev/mtdblock/0 24.0M 12.5M 11.5M 52% /tmp/0 /dev/mtdblock/1 187.3M 131.1M 56.1M 70% /tmp/1 /dev/mtdblock/3 12.8M 1.1M 11.6M 9% /tmp/3 /dev/mtdblock/disc 256.0M 142.5M 113.5M 56% /tmp/disc
Since we do not know more details about how they are used I would prefer not to touch them (/usr/local/etc seems to be ok).
notes: plugged devices will be mounted under /tmp/usbmount/... example... xtreamer with some apps in /opt and a connected usb stick...:
# df -h Filesystem Size Used Available Use% Mounted on /dev/root 187.3M 131.1M 56.1M 70% / /dev/mtdblock/2 32.0M 1.3M 30.7M 4% /usr/local/etc /dev/rd/0 40.0k 40.0k 0 100% /mnt/rd /dev/scsi/host2/bus0/target0/lun0/part1 7.5G 493.0M 7.0G 6% /tmp/usbmounts/sda1
One note: I put some few data in the root filesystem there. Your Xtreamer - out of the box - has more space left on /dev/root (but not that much).
So /proc/mounts in our case with a plugged in 8GB sub stick looks like this:
/ # cat /proc/mounts rootfs / rootfs rw 0 0 /dev/root / yaffs2 rw,noatime 0 0 none /dev devfs rw 0 0 none /proc proc rw,nodiratime 0 0 devpts /dev/pts devpts rw 0 0 none /sys sysfs rw 0 0 /dev/mtdblock/2 /usr/local/etc yaffs2 rw,noatime 0 0 none /tmp ramfs rw 0 0 /dev/rd/0 /mnt/rd vfat rw,nodiratime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1 0 0 /dev/scsi/host2/bus0/target0/lun0/part1 /tmp/usbmounts/sda1 vfat rw,nodiratime,fmask=0000,dmask=0000,codepage=cp437,iocharset=iso8859-1,shortname=winnt,utf8 0 0
The filesystem hirarchy is not that much FHS compatible (f.e. see the document root of the webservice). You find the whole Xtreamer Linux Directory Tree with a plugged in USB stick (/dev/sda1) on another wiki side.
myshortcut
Location of all favoiurites shortcuts:
/usr/local/etc/.myshortcut
Boot process and Kernel
Boot procedure
...need info... For example see the thread in the Xtreamer forum [1]
...looks like /linuxrc (symlink to busybox) manages futher boot proces... no inittab available... init scripts under /etc/init.d/ smells funny... rcS1 is the most interesting but nearly everythin is commented, things hase gone (script for starting inetd but no inetd there... other notes shows us something about console logins (via serial...)...
Linux
Besides a video and an audio enginge/firmware (needinfo... see firmware images audio_firmware.install.bin video_firmware.install.bin and configuration.xml in the firmware image file) the linux distribution bases on a linux-2.6.12.
uname:
Linux myxtreamer 2.6.12.6-VENUS #20 Fri Dec 11 18:04:19 KST 2009 mips unknown
Some additional informations and settings you can find in a introduced directory by realtek:
/sys/realtek_boards/ |-- AES_CCMP |-- board_id |-- bootloader_version |-- bootup_version |-- cpu_id |-- dvrfs_buffer |-- kernel_source_code_info |-- logo_param | |-- image | `-- param |-- misc_operations |-- modelconfig |-- signature |-- system_parameters |-- task_stack |-- tv_encoding_system `-- update
For example if you find/put in /sys/realtek_boards/system_parameters the word SYSLOGDISK the init script rcS1 starts another script for loggin (see the section about init scripts).
Another short note:
Filesystem support:
/ # cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev sockfs nodev usbfs nodev pipefs nodev futexfs nodev tmpfs nodev eventpollfs nodev devpts ext3 squashfs nodev dvrfs nodev ramfs vfat nodev devfs nodev nfs nodev cifs nodev jffs2 yaffs yaffs2 nodev rpc_pipefs ufsd
So poorly we have no reiserfs, no xfs...
Available kernel modules: (files beneath /lib/modules/...)
./2.6.12.6-VENUS/kernel/crypto/aes.ko ./2.6.12.6-VENUS/kernel/crypto/arc4.ko ./2.6.12.6-VENUS/kernel/crypto/deflate.ko ./2.6.12.6-VENUS/kernel/crypto/michael_mic.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/11n8709/HAL/rtl8192u/r8192_usb.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/11n8709/ieee80211/ieee80211-rsl.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/11n8709/ieee80211/ieee80211_crypt-rsl.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/11n8709/ieee80211/ieee80211_crypt_ccmp-rsl.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/11n8709/ieee80211/ieee80211_crypt_tkip-rsl.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/11n8709/ieee80211/ieee80211_crypt_wep-rsl.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187/ieee80211/ieee80211-8187.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187/ieee80211/ieee80211_crypt.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187/ieee80211/ieee80211_crypt_ccmp.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187/ieee80211/ieee80211_crypt_tkip.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187/ieee80211/ieee80211_crypt_wep.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187/rtl8187/r8187.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8191su/HAL/rtl8192u/r8192s_usb.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8191su/ieee80211/ieee80211-rsi.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8191su/ieee80211/ieee80211_crypt-rsi.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8191su/ieee80211/ieee80211_crypt_ccmp-rsi.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8191su/ieee80211/ieee80211_crypt_tkip-rsi.ko ./2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8191su/ieee80211/ieee80211_crypt_wep-rsi.ko ./2.6.12.6-VENUS/kernel/drivers/scsi/libata.ko ./2.6.12.6-VENUS/kernel/drivers/scsi/sata_mars.ko ./2.6.12.6-VENUS/kernel/drivers/usb/host/ehci-hcd.ko ./2.6.12.6-VENUS/kernel/drivers/usb/host/ohci-hcd.ko ./2.6.12.6-VENUS/kernel/drivers/usb/net/rtl8150.ko ./2.6.12.6-VENUS/kernel/fs/isofs/isofs.ko ./2.6.12.6-VENUS/kernel/fs/ptp/ptpfs.ko ./2.6.12.6-VENUS/kernel/fs/udf/udf.ko ./2.6.12.6-VENUS/kernel/fs/ufsd/ufsd.ko ./2.6.12.6-VENUS/kernel/fs/vcd/vcd.ko ./2.6.12.6-VENUS/kernel/net/ipv4/ipcomp.ko ./2.6.12.6-VENUS/kernel/net/ipv4/xfrm4_tunnel.ko ./2.6.12.6-VENUS/modules.alias ./2.6.12.6-VENUS/modules.ccwmap ./2.6.12.6-VENUS/modules.dep ./2.6.12.6-VENUS/modules.ieee1394map ./2.6.12.6-VENUS/modules.inputmap ./2.6.12.6-VENUS/modules.isapnpmap ./2.6.12.6-VENUS/modules.ofmap ./2.6.12.6-VENUS/modules.pcimap ./2.6.12.6-VENUS/modules.seriomap ./2.6.12.6-VENUS/modules.symbols ./2.6.12.6-VENUS/modules.usbmap
You find combiled and working binary packages for this device for example at a optware repository, see Installing ipkg on Xtreamer.
Startscrips
...needs to be done... f.e. see /etc/init.d/rcS1 and or /usr/local/etc/rcS The /linuxrc (busybox) binary starts /etc/init.d/rcS wich starts /etc/init.d/rcS1...
Services and Deamons
From outer view, means your LAN, network, these tcp ports are listening:
21/tcp open ftp 80/tcp open http 139/tcp open netbios-ssn 445/tcp open microsoft-ds 8082/tcp open blackice-alerts 49152/tcp open unknown
For the internal view I would suggest to first install the Installing ipkg on Xtreamer and then second the utility lsof (right now there seems to be no binary buld of netstat).
Besides this tcp services we have deamons for handling the media/GUI called DvdPlayer and ELF binary called RootApp which (? to be continued...).
Note: In general every service is running with id 0, with full root privileges!
RootApp
Right now we do not know that much about it. RootApp and DvdPlayer seems to be the two main (and closed source) applications in the Xtreamer. For example see MrWhos comment in the forum on this topic, you will find it here.
...closed source... if you strace it you see... not that much...:
...
727 write(1, "RootApp AVHDD version...\n", 25) = 25
727 write(1, "pli initialization...\n", 22) = 22
727 open("/dev/auth/0", O_RDONLY|O_LARGEFILE) = 4
...
...grepping... through the sources we find...:
linux-2.6.12_copy/include/asm-mips/signal.h:#define SIGUSR_RTC_ALARM 50 /* The system is woken up by RTC alarm when in power saving mode. This will be sent to RootApp */
So it looks like a watchdog... image/service starting tool.
DvdPlayer
This is the media player and it is listening on many ports and holds sessions to foreign media services (streaming...) ...to be continued...
Listening UDP ports are: 1900, 8086 and 62397
Listening TCP port is: 8082
DvdPlayer is started by RootApp, see the process history...:
root 76 0.0 0.1 400 132 ? S 09:59 0:00 RootApp root 78 0.0 0.1 400 132 ? S 09:59 0:00 \_ RootApp root 81 0.0 0.1 400 132 ? S 09:59 0:00 | \_ RootApp root 80 0.9 5.6 804752 6788 ? S< 09:59 2:16 \_ DvdPlayer root 86 0.0 5.6 804752 6788 ? S 09:59 0:00 \_ DvdPlayer root 89 0.0 5.6 804752 6788 ? SN 09:59 0:00 \_ DvdPlayer root 88 0.0 5.6 804752 6788 ? SN 09:59 0:00 \_ DvdPlayer root 97 0.0 5.6 804752 6788 ? S 09:59 0:00 \_ DvdPlayer root 102 0.0 5.6 804752 6788 ? S 09:59 0:00 \_ tty_monitor root 107 0.0 5.6 804752 6788 ? S 09:59 0:00 \_ DvdPlayer root 105 0.0 5.6 804752 6788 ? S 09:59 0:00 \_ IR_MONITOR root 108 0.0 5.6 804752 6788 ? S 09:59 0:00 \_ tts_monitor root 117 0.0 5.6 804752 6788 ? S 09:59 0:00 \_ AbsAP_discThrea root 123 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ RPC_thread_A root 122 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ RPC_thread_A root 121 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ RPC_thread_A root 126 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ RPC_thread_V root 124 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ RPC_thread_V root 125 0.0 5.6 804752 6788 ? S 10:00 0:01 \_ RPC_thread_V root 127 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ VFD_Updater root 128 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ USB root 154 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ LoadMedia root 158 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ DvdPlayer root 159 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ DvdPlayer root 157 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ DvdPlayer root 172 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ HDMI_MONITOR root 171 0.0 5.6 804752 6788 ? S 10:00 0:00 \_ WEBCGI Thread root 1421 0.0 5.6 804752 6788 ? S 13:00 0:00 \_ FlowManager root 1422 0.0 5.6 804752 6788 ? S 13:00 0:00 \_ NTSC Closed_Cap root 1424 0.0 5.6 804752 6788 ? S 13:00 0:00 \_ Teletext root 1423 0.0 5.6 804752 6788 ? S 13:00 0:00 \_ ATSC Closed_Cap
ushare
GeeXboX uShare, A free UPnP A/V & DLNA Media Server.
Listening on UPD 1900 and 1024 only localhost
Listening on TCP 1337, 49152
Its configuration file is /sbin/www/ushare.conf to be continued...f.e. see http://ushare.geexbox.org/
Syslog
Syslog is not started by default. You can just start this (build in busybox) by typing in syslogd. Without change something you find it's logs at /tmp/log/messages. Note: /var/log/ is a syslink to /tmp/log/ and beware not to logg to much/long: The logfiles will grow on the Xtreamers internal storage/flash.
Todo: Write down notes to log on external device and remote sysloghost. (there is an interesting script in /etc/init.d... seems the Xtreamer people had the same idea...)
Samba
First let me say one really bad thing: The Samba configuration grants local root access to everyone. The good information: So you do not need to care about any security patches... (:
Installed is samba 3.0.23c and it resists on /usr/local/daemon/samba/. Its configuration bases/is on /usr/local/daemon/samba/lib/smb.conf. Copies of the samba files resists in /tmp/package/samba/, too. So we need to check out if they modify the config in runtime (I guess).
/usr/local/daemon/samba/lib/smb.conf:
[global] security=share include=/usr/local/etc/workgroup server string=%h #log file=/usr/local/daemon/samba/var/log.%m #max log size=2000 domain logons=Yes dns proxy=No use sendfile=yes guest account=root #encrypt passwords=yes passdb backend=smbpasswd socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 read raw=yes write raw=yes oplocks=yes max xmit=65535 dead time=15 getwd cache=yes client NTLMv2 auth=yes veto files=/.cached/.lock/lost+found/System Volume Information/RECYCLER/ get quota command = /usr/local/daemon/samba/sbin/get_quota
[Xtreamer] comment=Xtreamer Storage path=/tmp/usbmounts/ guest ok=yes writable=yes force create mode=0775 force directory mode=0775
You can manually mount a share with for example
mount -t cifs //<your ip>/<share> /tmp/somewhere -o username=<MyLogin>,password=<MySecret>,workgroup=<MyGroup>
Be awared not to use a sharename with a subdirectory into its name. In such case you will get the error message "...failed: No such device or address". So the first example would not work, the second is fine:
mount -t cifs //192.168.0.1/media/video /tmp/somewhere ... mount -t cifs //192.168.0.1/media /tmp/somewhere ...
Note: Maybe you want to access this manually mounted share via the DvdPlayer. Right now I don't know how I can tell DvdPlayer to open that directory I want to (maybe a hack with the favorites will work). But a (yes, its mad) workaround is: Plug in a usb stick, create the mountpoint there (f.e. /tmp/usbmount/sda1/share) and open the media library for USB...
Web Services
Installed is lighttpd-1.4.19. see below.
The web from the Xtreamer is realized with a lot of php scripts. The document-root is /sbin/www. One interesting thing is the symlink media there to /tmp/usbmounts.
lrwxrwxrwx 1 500 500 14 Dec 22 2009 media -> /tmp/usbmounts
Since all plugged in media will be mounted as subdirectories under /tmp/usbmounts/ you have access to this files via http, too.
The lighttpd is:
lighttpd-1.4.19 - a light and fast webserver Build-Date: Dec 11 2009 13:26:31
Event Handlers:
+ select (generic)
+ poll (Unix)
+ rt-signals (Linux 2.4+)
+ epoll (Linux 2.6)
- /dev/poll (Solaris)
- kqueue (FreeBSD)
Network handler:
+ writev
+ mmap support
Features:
- IPv6 support
- zlib support
- bzip2 support
+ crypt support
- SSL Support
- PCRE support
- mySQL support
- LDAP support
- memcached support
- FAM support
- LUA support
- xml support
- SQLite support
- GDBM support
The configfile is /sbin/www/lighttpd.conf:
server.modules = (
"mod_access",
"mod_fastcgi",
"mod_webdav",
"mod_userdir"
)
#server.document-root = "/tmp/temp"
server.document-root = "/sbin/www"
fastcgi.debug = 1
fastcgi.map-extensions = ( ".php3" => ".php" )
#server.errorlog = "/tmp/temp/error_log123"
server.indexfiles = ( "index.php", "index.html",
"index.htm", "default.htm" )
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "audio/x-wav",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv"
)
mimetypes.use-xattr = "enable"
# file upload
#server.upload-dirs = ("/tmp/hdd/volumes/")
server.max-request-size = 1048576
#post_max_size = 1048576
#upload_max_filesize = 1048576
server.network-backend="writev"
server.max-keep-alive-requests = 0
server.max-keep-alive-idle = 100
server.tag = "WMI Http Server"
#accesslog.filename = "/tmp/temp/access_log"
url.access-deny = ( "~", ".inc" )
server.port = 80
#compress.cache-dir = "/tmp/temp/cache/"
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php.socket",
"bin-path" => "/sbin/www/php",
"max-procs" => 1,
"broken-scriptfilename" => "enable",
"allow-x-send-file" => "enable",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "1"
),
)
)
)
FTP Service
Xtreamer comes with the tiny Stupid-FTPd. The homepage of this procet is hosted at sourceforge Stupid-FTPd.
My configuration contained the cleartext password I have entered into the webformular (while accessing and typing in during the setup at the first time) is in there, too. And for sure, yes this file is readable for everyone. So if you ever forgot your password just have a look here. The big letter "A" at the end of the line with the userinformations means that this account is granted for every operations of the ftpd. The "good thing" is that we have no access to other files than under /tmp/usbmounts (in general).
/usr/local/etc/stupid-ftpd.conf:
mode=daemon changeroottype=real port=21 maxusers=10 user=MyUsername MyCleartextPassword /tmp/usbmounts 10 A login-timeout=120 timeout=240
Terminal for the internal serial port
If you open the case you can see connectors for a serial port. The binary console_login is binded to the device /dev/tts0 and will (not) welcome you. Looks like it is for debug/maintenance...:
strings from console_login:
/lib/ld.so.1 $%0@ '% @ $%0@ $%0@ $%0@ /dev/tts/0 Why you want to enter this system console You are inValid USER /sbin/reboot ================= RTC QC start ========== /tmp/usbmounts/sda1/rtc_qc ================= RTC QC End ========== _init _fini __uClibc_main __deregister_frame_info __register_frame_info open myfd signal ioctl memcpy miscount org_password getpassword stderr fprintf system sleep login_message write strlen read rtc_qc strcmp _DYNAMIC_LINKING __RLD_MAP libc.so.0 _gp_disp _DYNAMIC _GLOBAL_OFFSET_TABLE_ _ftext __etext _fdata _edata __bss_start _fbss ___sbss_start ___sbss_end Enter MvixPVR Enter Login ID : rtc_qc >3 @
Others...
What is /bin/Inspector doing?
Looks like it has something to do with the "NAS" mode (or perhaps it would be better say that it is running as the opposite of the nas-mode)? It creates the pipe /tmp/app.
I never played with the nas mode.
What is /usr/local/bin/NAS_Mode_App doing?
Yes... something with nas... but it is interesting that it communicates with the video/audio "engine", too.
Note:- I understand that on entering NAS mode it issues a 'stopall' to shut down rootapp and DvdPlayer.
.o(I never played with the nas mode).
Write something down about /sbin/udhcpc...
...todo...
hotplug
We should write down some notes how (where) hotplug mounts the devices and how you can take control of it.
"sleep 300" process
This sleep is caused by a looping shell script for updating DDNS datas. Right now I do not know who is starting the scrip itself. You find the script here /sbin/www/ddns.sh (not that interesting).
So now you now why you see your box connecting to 210.109.97.109 port tcp/8000 every 5 minutes.
Xtreamers busybox
The Xtreamer comes with a nice busybox installation. Poorly we have no telnetd into it but utils like wget are there:
BusyBox v1.1.3 (2009.12.11-09:06+0000) multi-call binary Usage: busybox [function] [arguments]... or: [function] [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as! Currently defined functions: [, [[, addgroup, adduser, ash, basename, busybox, cat, chmod, chown, chroot, clear, cp, cut, date, dd, delgroup, deluser, devfsd, df, dirname, dmesg, du, e2fsck, echo, egrep, eject, expr, false, fdisk, fgrep, find, free, fsck, fsck.ext2, fsck.ext3, ftpget, ftpput, getopt, grep, gzip, halt, head, hexdump, hostname, hwclock, id, ifconfig, init, insmod, ipcrm, ipcs, kill, killall, klogd, linuxrc, ln, logger, login, losetup, ls, lsmod, lzmacat, mkdir, mke2fs, mkfs.ext2, mkfs.ext3, mkfs.extk, mknod, mkswap, mktemp, modprobe, more, mount, mv, nice, passwd, pidof, ping, pivot_root, poweroff, printf, ps, pwd, rdate, readlink, reboot, rm, rmdir, rmmod, route, sed, sh, sleep, sort, stty, swapoff, swapon, sync, syslogd, tail, tar, tee, test, time, top, touch, tr, true, tune2fs, udhcpc, udhcpd, umount, uname, unlzma, unzip, uptime, usleep, vi, wc, wget, which, yes
Next generation Xtreamer devices (like Prodigy) comes with the following busybox installation:
BusyBox v1.18.4 (2012-02-17 16:24:38 CST) multi-call binary.
Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.
Usage: busybox [function] [arguments]...
or: busybox --list[-full]
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, acpid, add-shell, addgroup, adduser, ash, awk, base64, basename,
beep, blkid, blockdev, bootchartd, cat, chmod, chown, chroot, cksum,
clear, cp, cut, date, dd, delgroup, deluser, depmod, devmem, df,
dhcprelay, diff, dirname, dmesg, dnsdomainname, du, dumpleases, echo,
egrep, eject, expr, fbsplash, fdisk, fgconsole, fgrep, find, flock,
free, fsck, fsync, ftpd, ftpget, getopt, grep, gunzip, gzip, halt,
head, hexdump, hostname, hwclock, id, ifconfig, ifplugd, inetd, init,
insmod, ionice, iostat, kill, killall, killall5, ln, login, losetup,
ls, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makemime, mdev,
mkdir, mkdosfs, mke2fs, mkfs.ext2, mkfs.vfat, mknod, mkswap, mktemp,
modinfo, modprobe, more, mount, mpstat, mv, nbd-client, netstat, nice,
ntpd, passwd, pgrep, pidof, ping, pivot_root, pmap, popmaildir,
poweroff, powertop, ps, pwd, rdev, readahead, readlink, reboot,
reformime, remove-shell, renice, rev, rm, rmdir, rmmod, route, rtcwake,
scriptreplay, sed, setfont, setlogcons, sh, sha256sum, sha512sum,
showkey, sleep, smemcap, swapoff, swapon, sync, sysctl, tail, tar,
telnetd, test, tftp, timeout, top, touch, tr, tunctl, udhcpc, udhcpd,
umount, uname, unlzma, unlzop, unxz, unzip, usleep, vi, volname, wall,
which, xz, xzcat, zcat
Customer busybox build working on all xtreamer devices:
~ # busybox BusyBox v1.18.5 (2012-01-15 18:11:10 MSK) multi-call binary. Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: busybox --list[-full] or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as. Currently defined functions: [, [[, acpid, add-shell, addgroup, adduser, adjtimex, ar, arp, arping, ash, awk, basename, bash, blkid, blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, cmp, cp, cpio, cryptpw, cttyhack, cut, date, dc, dd, delgroup, deluser, depmod, devfsd, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dpkg, dpkg-deb, du, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat, fdisk, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid, hostname, httpd, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kill, killall, killall5, klogd, length, less, linux32, linux64, ln, logger, login, logname, logread, losetup, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, man, md5sum, mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice, nmeter, nohup, nslookup, ntpd, od, passwd, patch, pgrep, pidof, ping, pipe_progress, pivot_root, pkill, pmap, poweroff, powertop, printenv, printf, ps, pscan, pwd, raidautorun, rdate, rdev, readlink, readprofile, realpath, reboot, remove-shell, renice, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, seq, setarch, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat, strings, stty, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute, true, tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd, umount, uname, uncompress, unexpand, uniq, unlzma, unlzop, unxz, unzip, uptime, usleep, uuencode, vconfig, vi, vlock, volname, wall, watch, watchdog, wc, wget, which, whoami, xargs, xz, xzcat, yes, zcat, zcip
very dirty busybox replacement (please test first!!! without replacement )
cd /tmp wget http://xtreamer-web-sdk.googlecode.com/svn/trunk/xmp/busybox chmod 755 ./busybox cp /bin/busybox /bin/busybox.bak ./busybox cp -a ./busybox /bin/busybox for i in $( busybox --list-full ); do /bin/busybox rm -f /$i && /bin/busybox ln -s /bin/busybox /$i ; done wget http://xtreamer-web-sdk.googlecode.com/svn/trunk/xmp/programs/base/inetd.conf -O /etc/inetd.conf chown 500:500 /etc/inetd.conf if [ -f /etc/init.d/S45telnet ]; then rm /etc/init.d/S45telnet fi
Xtreamers applications and configurations
...have a deeper look into /usr/local/... a lot of interesting things you find there!
Live Radio
Under /usr/local/Live_Radio/ we found the structure of the radios streaming list. Just edit/put there your plsx files, see tne thread The Official .PLSX Radio Stations List in the Xtreamers forum.
...this whole section needs to becontinued! Specially all the things under /usr/local are interesting...
(last but not least: we should have a short look into the existing php scripts... they may answer some more questions)
