Saturday, January 5, 2019

Streaming media in your home challenges in 2019 - DLNA, DIAL, APPs, XML woes

Media Types

There are many types of media you'd want to stream to a display device, but it mostly boils down to these 5 broad categories:
  • Netflix, Amazon-Video, and other subscription based VOD services
  • Youtube, Vimeo, and many others like them, free/ad-supported
  • Live TV, maybe using a subscription card, and then usually a dedicated decoder device
  • Other live sources, surveillance cams, web cams, desktop streams, video conferences
  • Stored content on devices in your own network and/or under your control, or neither.
They each come with a set of characteristics and (associated) challenges:

Subscription based VOD services

  • Some of your display devices may have a dedicated app for that.
  • Some combinations of browsers/OSs/platform/etc can play in the browser.
  • Content selection on the various platforms differs, and getting worse
  • External streaming services, etc.mostly out of your control.
  • internal sources
    • Live sources with control over the output formats/protocols
    • Live sources with less or no control over the output
    • Stored content on devices capable of transcoding (format/codec changes)

(more to come soon)

Tuesday, October 6, 2009

Iphone RemoteControl for Emtec N200

How-To use any web-capable PDA as a RC for your N200
(Edit: Description adapted to newer, faster version)
(Edit2: Installation hints added, 'roadmap' extended)

NOTE: The information below is outdated, the pastebin-links have expired, and a fellow Reader has posted an alternate, better, and prettier version here:
Blog of Adicon

There are several reasons why you could want this:
  • Your table already hosts a zoo of remotes.
  • Your PDA doesn't feel flimsy like the default remote.
  • Your PDA uses a rechargeable battery. (priceless in the right moment)
  • Your device has more functions than buttons on the remote.
  • You get RSI from the awkward button placing or the funny shape of your hand.
  • Works through cabinet doors and even with poor aiming.
  • You can call your PDA-Phone if you lose it in the house.
  • You already use your PDA to control other AV-devices.
Some of these may not apply to you, but at least some should speak to you too. For me, 1, 4, 8 and sometimes 7 carried the most weight.

Screenshot of it in action (http://n200/cgi-bin/pda.cgi):

Mute Power
Media
Info
SubsBack ^Vol
+
Audio< Enter
/Go
>
PrevNext v Vol
-
FR FF StopPlay /
Pause
Chap
<
Chap
>
10sec
<
30sec
>
Zoom
-
Zoom
+
RepSlow
01 2
34
56 7
89


As you can see, I believe simplicity is one expression of elegance.
(Plus, it loads fast too and has nearly no dead space)

So, what do you need?
  • Emtec N200 or compatible device (feedback please!)
  • An IPhone or other web-enabled PDA (feedback please!)
  • telnet access to the device.
  • 2 scripts, 1 and 2, which are downloaded/used during the below installation steps.

Device preparation:
Some startscripts and the system area of the device will need to be modified, this is a one-time action, and has proven useful in other ways too. The device needs Internet Access during the installation to download the above scripts, or the 2 'wget'-commands will need to be adapted/replaced.
Now you need the telnet access to execute the following commands:

1. Make Root-Filesystem writeable:

/ # mount -o remount,rw /

2. Installing busybox1.9.1 with mkfifo support:

/ # mkdir -p /opt/bin
/ # cd /opt/bin
/ # wget http://moviecube.free.fr/Binaries/busybox1.9.1/busybox1.9.1
/ # chmod +x busybox1.9.1
/ # for i in top netcat strings mkfifo ether-wake nc; do ln -s busybox1.9.1 $i; done

3. Installing the WebUI

/ # cd /tmp_orig/www/cgi-bin
/ # wget -O - http://ralexs.pastebin.com/pastebin.php?dl=m2ccfab9b |sed "s/.$//" >pda.cgi
/ # chmod +x pda.cgi

4. Installing input redirection for DvdPlayer binary

/ # vi /usr/local/etc/rcS

Then go to this page, select all the text from the bottom textbox, and copy-paste it into the second line of the file currently open in the editor, /usr/local/etc/rcS

5. Setting launch trigger, committing changes and reboot

/ # touch /tmp_orig/loadExtScript
/ # sync
/ # mount -o remount,ro /
/ # reboot -f


Done!

Now just navigate -on whatever device- to:
http://IP.OF.UR.N200/cgi-bin/pda.cgi

On the Iphone you have to scale the page to the right size at first use. Can somebody test with a WinMobile device?

Note for developers concerning the major changes from V1:
The old version of this script used an input redirection based on "tail -f". That proved to be ineffective and slower. The new script uses "dd bs=1" and "mkfifo", which is why the installation requires the download/install of the enhanced busybox.

My current 'development version' of the script has more buttons. I've added "GoTo/Search" and "Root". "Eject", "TV Sys", and "Option" are still missing, because I did not (yet)find/integrate their codes. "Option" is not really needed though, because all its functions are available with direct keys.
The keycode behind the "Root"-Button is '/'. This *may* provide a way to build an http-file-browser, but i still need to do some testing.
StandBy-Mode, something missing from the default N200 may also be added to the next version (Also pending further testing/cleaning).
Step Nr.4 from the above steps will be replaced by a simpler wget command (I dont have the original rcS anymore, and have not yet looked for the 'unyaffs' incantation to extract a virgin copy).
I will post a new version soon, check back in 2,3 days.

The work described here was inspired by these two forum posts.

thanks to commenter l.lenzen for pointing out 2 problems with the above description, and thanks to 'triw' on the Emtect Moviecube forum for pointing towards 2 fixes, which I integrated in the above description.

have fun, ralexs

Tuesday, September 22, 2009

Communities and useful sites for the N200

Here's a list of useful internet ressources for the Emtec N200:

Emtec (manufacturer) official:
  • Current official firmware here.
  • Sources of the GPL'd parts here.


Third-Party forum and utilities:


I joined the MHDWorld forum, as usual trying to help others while pushing my own little agenda :)

Threads started by me:

Note: Unfortunately a.k.a. "Unanswered Questions"

Feel free to chime in, if you've found another useful ressource not yet listed here. Thanks already.

Thanks also go to the individuals who have already amassed lots of good resources (people, pics, code and text). Telemak, Bogy, Honki and Cybermomo, and ...
I would like to give proper credit for all the above links, but for some of them i don't know yet who created these resources.


Thanks for reading, see you later.

Emtec N200: Network footprint

The N200 runs Linux and is network-enabled by default. It supports local storage (USB and SD-Card). As such I bought it hoping I could extend it in ways not originally intended by the device manufacturer. Lets get to work:

A network scan reveals some interesting details:

# nmap n200
Starting Nmap 4.76 ( http://nmap.org )
Interesting ports on 192.168.n2.00:
Not shown: 997 closed ports
PORT STATE SERVICE
23/tcp open telnet
80/tcp open http
8082/tcp open blackice-alerts
MAC Address: 00:CE:39:DE:DB:EF (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.89 seconds


Port 80 was to be expected, everything these days has a web-interface, however functional. Port 23 for Telnet was a happy discovery, and promised deep-level access into the device.

On port 23 we find the expected login prompt, and we get a root shell without a password. Swell. We will set a password later on.

Unfortunately, the N200 doesn't have netstat -plunt, even worse, it has no netstat at all.

Edit: I found a compatible busybox binary with netstat builtin.

/tmp/usbmounts/sda1/bin # ./busybox1.9.1 netstat -lunt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:8086 0.0.0.0:*
udp 0 0 0.0.0.0:54450 0.0.0.0:*
udp 0 0 0.0.0.0:1900 0.0.0.0:*
Even more unknown ports! 1900 is supposed to be UPNP. Through testing, the 'DvdPlayer' binary is known to be the one using all these ports. But what for?

Note: Anybody know a way to show listening ports (with processes) without netstat?

I turned to the webpage, hoping for something that resembles the web interface of my Dreambox 800, including a PDA-usable virtual remote control. Some pointers pertaining to Port 8082, perhaps it being the admin port for some software component, like a builtin transcoding UPNP MediaServer ... </wishful_thinking>

The webpage was -well- rather limited. I suppose its useful for the integer-adding-impaired, but apart from that? Back at the root shell, with ps we find inetd running, enabled services are telnetd and httpd, both of which are symbolic links in /usr/sbin/ pointing to busybox.

Inspecting the contents of /var/www/cgi-bin/ it becomes visible, that the webpage summing up 2 number is meant to demonstrate the ease at which one could add more functionality through simple shell scripts.

All this is great news, but we still don't know what Port 8082 is about? It's probably not 'blackice-alerts'!

I tried connecting to it, which worked, but after that i pretty much hit a dead end for now:

# telnet n200 8082
Trying 192.168.N2.00...
Connected to 192.168.N2.00.
Escape character is '^]'.
help
?
test
W
X
menu
^]
telnet> quit
Connection closed.


No matter, what I typed, no returned output at all.

Thanks for reading; if you have some useful info (or praise), please do leave a comment.

Examining N200: 'DvdPlayer' - The Main program (Part1)

Startup & commandline options

The main program on the Emtec N200 is DvdPlayer. It resides in /usr/local/bin. The script to start it is /usr/local/etc/rcS. DvdPlayer itself then creates a few dozen forks.
After telneting to the Device, the command stopall allows the user to shutdown the GUI. Following that it is possible to relaunch it with commandline options.

To find out the available options:

/usr/local/bin # DvdPlayer --help
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...
file system 2, sector 4294966272
mount to /usr/local/etc/hdd/volumes/HDD1
file system 4, sector 262144
mount to na
file system 3, sector 262144
mount to /usr/local/etc/hdd/root
MediaServer.cpp , 433 bind local IP fail !!error = Unknown error 125
station id [467] not found!
station id [2049] not found!

mele_iradio_init ok!

s_n_stations = 236

GrandMa Revision: 188778
rev: v7.1.1 r1193 by fengyh@MeleSoft at Jul 22 15:39:16 2009
Unrecognized option: --
DvdPlayer: -h -l [on/off] -o -p -f [NTSC/PAL]
-h: help
-l [on/off]: user input logging switch, defaultly off
-o : output file for output. Defaultly log.txt will be written
-p : output file for timing information logging
-f [NTSC/PAL]: select TV system (encoder)
-s [POWER/EJECT/RTC]: select start mode
-r [0/1/2/3/4/5/6/7/8]: set region code
-A : audio dumpfile
-V : video dumpfile
-S : size for debug memory
-t: calulate AP starting time

mele_iradio_release !


I'm not quite sure, what the first block of messages is trying to tell me, but the lower half is quite helpful. There are also some terms that seem noteworthy, like mele_iradio, MediaServer and GrandMa Revision. The Firmware version number Emtec uses is also contained here (rev: v7.1.1 r1193)

If you can shed some light on the meaning of the first half, please do so in the comments section. I will soon publish another post about the actual options, and how they can be applied in a permanent fashion.

Thanks for reading.

Sunday, September 20, 2009

Emtec N200: My new Mediaplayer

Replacing my PS3 as HD-Mediaplayer with the N200 was a good choice.
The PS3 was loud and picky, while the N200 plays most everything I tried, noiselessly.

German: Der lautlose N200 hat meine PS3 auch bzgl. unterstützter Formate aus dem Wasser geschlagen, und ist daher mein Haupt-Mediaplayer geworden.

Even so, like most devices more powerful than a calculator, it has a few addressable shortcomings. On the other hand, with the right 'glue' this device could be even more. This device, and compatible devices have already gathered quite a community, and some extensions to the Linux-based system have already been published.

German: Leider hat dieses Gerät, wie die meisten modernen Elektronikgeräte, einige Eigenarten. Glücklicherweise lassen sich viele davon durch Firmwareupdates beheben, oder sind es schon. Für dieses, und einige andere kompatible Geräte gibt es schon ein paar Foren, und Erweiterungen für dieses Linux-basierte Gerät sind auch schon im Umlauf.

Note: This post is not finished, come back soon
Edit: Added some German text

Wednesday, September 2, 2009

Excerpt from my current iPhone apps list

Categorized, though mostly focused on remote controlling and media access, along with some notes:

[Remote] Media Control/Playing:
  • MPoD - controls mpd, my Home Stereo system.
  • dreaMote - controls your DreamBox DVB Receiver.
  • XBMControl - controls XBMC, the great Media-Center.
  • (non-free) PlugPlayer - UPNP Media Control (Experimental).
  • (non-free) iMediaSuite - UPNP Media Control (Experimental).
  • iLirc from daspider - LIRC Integration, unfortunately not (yet?) in the App Store, so currently only usable on phones with removed App restrictions. (Thus currently non usable for me)
Generic remote control applications:
  • Touchpad (non-free) - Use your iphone as external wifi touchpad.
  • TouchTerm - SSH Client with some nice features.
WebDAV-related, and not bound to specific providers:
  • Disks - Supports SSL Connections. Still testing.
  • DAV-E free - Still testing.
Communication:
  • XSPhone - SIP VoIP Client, configurable for other providers.

If you know any noteworthy additions to above list, or have any other hints or notes, like free functional equivalents to the non-free applications, feel free to drop me a comment.
I will update this post as time progresses. Thanks for reading.