LG BD390 Network Blu-ray Player
Saturday, 5 December 2009
Anything goes…?
Here is what I found when playing around with this DLNA Blu-Ray Player…
A few notes on supported media types… work in progress.
- mkv in general no problem…
- subtitles in files do not seem to work
- i have one mkv where i do not get picture and stuttering audio, video demuxed to mp4 works… no idea.
- x264 in 720p and 1080p
- profile 5.1 gives a warning, but works
- huge photos are a problem, take forever to load not ideal as picture viewer
MPEG2-TS
The player can tell you the resolution and the filesize of a MPEG2-TS and it is not possible to search/rewind/fast-forward! Teletext subtitles and switching to secondary audio is also not possible!
MPEG2-TS from VDR streamdev plugin can be saved to disk like this (direct streaming does not work):
# wget -O myrecording.ts http://192.168.10.50:3000/TS/S19.2E-1-1082-20002
Bootup, device discovery, login
It is pretty damn fast with the bootup and looking around it the network:
467 *REF* 0.0.0.0 255.255.255.255 DHCP DHCP Discover - Transaction ID 0xab2e9745 468 0.006640 0.0.0.0 255.255.255.255 DHCP DHCP Request - Transaction ID 0xab2e9745 469 0.013535 LgElectr_a6:48:32 Broadcast ARP 192.168.10.10 is at 00:e0:91:a6:48:32 470 0.144997 192.168.10.10 239.255.255.250 SSDP M-SEARCH * HTTP/1.1 471 0.247305 192.168.10.10 239.255.255.250 SSDP M-SEARCH * HTTP/1.1 472 0.347921 192.168.10.10 239.255.255.250 SSDP M-SEARCH * HTTP/1.1 473 0.348967 IntelCor_49:ce:2f Broadcast ARP Who has 192.168.10.10? Tell 192.168.10.50 474 0.349185 LgElectr_a6:48:32 IntelCor_49:ce:2f ARP 192.168.10.10 is at 00:e0:91:a6:48:32 475 0.349200 192.168.10.50 192.168.10.10 UDP Source port: 40695 Destination port: 39175 476 0.352630 192.168.10.10 192.168.10.50 TCP 41639 > 49152 [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=4294682142 TSER=0 WS=5 477 0.352666 192.168.10.50 192.168.10.10 TCP 49152 > 41639 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=907196998 TSER=4294682142 WS=6 478 0.352867 192.168.10.10 192.168.10.50 TCP 41639 > 49152 [ACK] Seq=1 Ack=1 Win=5856 Len=0 TSV=4294682143 TSER=907196998 479 0.353338 192.168.10.10 192.168.10.50 HTTP GET /description.xml HTTP/1.1
The DHCPOFFER and DHCPACK are missing in this trace, but only 0.014 seconds after he asked for an IP he tells the subnet where to find him and fires off three search broadcasts for UPnP devices (0.1 sec apart). In this trace my Mediatomb server (who seems to have ignores the player’s ARP broadcast) reacts to the searches via UDP and the player asks for more via HTTP GET.
UPnP
This HTTP GET /description.xml is interesting because it tells us a little bit about the BD390:
GET /description.xml HTTP/1.1 HOST: 192.168.10.50:49152 DATE: Wed, 11 Jun 2008 00:00:12 GMT USER-AGENT: Linux/2.6.24.7.0909171-REL UPnP/1.0 DLNADOC/1.50 INTEL_NMPR/2.0 LG_DLNA_SDK/1.5.0 friendlyName.dlna.org: BD300 HTTP/1.1 200 OK CONTENT-LENGTH: 2767 CONTENT-TYPE: text/xml; charset=UTF-8 DATE: Fri, 04 Dec 2009 20:52:05 GMT LAST-MODIFIED: Fri, 04 Dec 2009 20:08:48 GMT SERVER: Linux/2.6.27-9-generic, UPnP/1.0, MediaTomb/0.11.0 CONNECTION: close
I observed, that if the content on the UPnP server changes you still need to get back to the “server” view on the player to see the changes, just leaving and entering a directory does not update the contents!
ARP
After making first contact with my UPnP server the BD390 floods the local subnet with ARP discovers.
632 21.835447 LgElectr_a6:48:32 Broadcast ARP Who has 192.168.10.189? Tell 192.168.10.10 633 21.836450 LgElectr_a6:48:32 Broadcast ARP Who has 192.168.10.190? Tell 192.168.10.10 634 22.626558 LgElectr_a6:48:32 Broadcast ARP Who has 192.168.10.3? Tell 192.168.10.10 635 22.627526 LgElectr_a6:48:32 Broadcast ARP Who has 192.168.10.4? Tell 192.168.10.10 636 22.629580 LgElectr_a6:48:32 Broadcast ARP Who has 192.168.10.5? Tell 192.168.10.10
It does this three times for the whole IP range. It is however strange, that it stops at 190 the first two runs and only goes up to 254 in the third (with a /24 subnet in my case).
CIFS
Regarding CIFS first contact looks like this where in my case a Samba server is answering:
492 21.679918 192.168.10.10 192.168.10.50 NBNS Name query NBSTAT *<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00> 493 21.680215 192.168.10.50 192.168.10.10 NBNS Name query response NBSTAT
A little while after this first hello the player tries to log in as WORKGROUP/root (fail) and then as anonymous (success) to retrieve the list of shares:
1212 26.119421 192.168.10.10 192.168.10.50 SMB Negotiate Protocol Request 1213 26.120126 192.168.10.50 192.168.10.10 SMB Negotiate Protocol Response 1214 26.122693 192.168.10.10 192.168.10.50 SMB Session Setup AndX Request, NTLMSSP_NEGOTIATE 1215 26.123458 192.168.10.50 192.168.10.10 SMB Session Setup AndX Response, NTLMSSP_CHALLENGE, Error: STATUS_MORE_PROCESSING_REQUIRED 1216 26.139505 192.168.10.10 192.168.10.50 SMB Session Setup AndX Request, NTLMSSP_AUTH, User: WORKGROUP\root 1217 26.139864 192.168.10.50 192.168.10.10 SMB Session Setup AndX Response, Error: STATUS_LOGON_FAILURE 1218 26.140373 192.168.10.10 192.168.10.50 SMB Session Setup AndX Request, User: anonymous 1219 26.141477 192.168.10.50 192.168.10.10 SMB Session Setup AndX Response 1220 26.142248 192.168.10.10 192.168.10.50 SMB Tree Connect AndX Request, Path: \\192.168.10.50\IPC$ 1221 26.142821 192.168.10.50 192.168.10.10 SMB Tree Connect AndX Response 1222 26.143434 192.168.10.10 192.168.10.50 LANMAN NetServerEnum2 Request, Workstation, Server, SQL Server, Domain Controller, Backup Controller, Time Source, Apple Server, Novell Server, Domain Member Server, Print Queue Server, Dialin Server, Xenix Server, NT Workstation, Windows for Workgroups, Unknown server type:14, NT Server, Potential Browser, Backup Browser, Master Browser, Domain Master Browser, OSF, VMS, Windows 95 or above, Unknown server type:23, Unknown server type:24, Unknown server type:25, Unknown server type:26, Unknown server type:27, Unknown server type:28, Unknown server type:29, Local List Only, Domain Enum 1223 26.143752 192.168.10.50 192.168.10.10 LANMAN NetServerEnum2 Response 1224 26.144517 192.168.10.10 192.168.10.50 LANMAN NetServerEnum2 Request, Domain Enum 1225 26.144739 192.168.10.50 192.168.10.10 LANMAN NetServerEnum2 Response 1226 26.145368 192.168.10.10 192.168.10.50 SMB Tree Disconnect Request 1227 26.145545 192.168.10.50 192.168.10.10 SMB Tree Disconnect Response
Note that this happens all by itself when the device boots! I have not yet entered the “My Media” menu…
Wo when I finally try to enter one of the shares on the server this happens:
461 13.250183 192.168.10.10 192.168.10.50 SMB Session Setup AndX Request, User: \guest 462 13.250457 192.168.10.50 192.168.10.10 SMB Session Setup AndX Response, Error: STATUS_LOGON_FAILURE [...] 474 13.399078 192.168.10.10 192.168.10.50 SMB Session Setup AndX Request, User: \ 475 13.399312 192.168.10.50 192.168.10.10 SMB Session Setup AndX Response, Error: STATUS_LOGON_FAILURE
Now the onscreen keyboard to enter a username and password appears and afer that the login goes on like this:
487 13.548392 192.168.10.10 192.168.10.50 SMB Session Setup AndX Request, User: \florian 488 13.555377 192.168.10.50 192.168.10.10 SMB Session Setup AndX Response 489 13.556095 192.168.10.10 192.168.10.50 SMB Tree Connect AndX Request, Path: \\192.168.10.50\VDR 490 13.556993 192.168.10.50 192.168.10.10 SMB Tree Connect AndX Response
Even with a saved and working username and password combination the player always goes through that three login steps! First it tries guest, then nothing and finally the saved username.
Accessing media through UPnP
Local AVI
This is the first HTTP GET from the player to a Mediatomb server to play a local Xvid/MP3 AVI:
GET /content/media/object_id=392191&res_id=0&ext=.avi HTTP/1.1 Range: bytes=0-4095 Host: 192.168.10.50:49152 Accept: */* HTTP/1.1 206 Partial Content CONTENT-LENGTH: 4096 CONTENT-TYPE: video/x-msvideo CONTENT-RANGE: bytes 0-4095/182818448 DATE: Fri, 04 Dec 2009 20:12:41 GMT LAST-MODIFIED: Wed, 29 Apr 2009 18:08:56 GMT SERVER: Linux/2.6.27-9-generic, UPnP/1.0, MediaTomb/0.11.0 CONNECTION: close Content-Disposition: attachment; filename="01x01 - Pilot.avi" Accept-Ranges: bytes
As you can see the player is requesting only the first 4kb with the “Range” parameter in the header. The player does not give much other information about who he is. In this case Mediatomb answers with a correct HTTP 206 with parts of the requested file. I don’t know much about UPnP, but this process is rather ridiculous at times, eg in the following the player just requests the first 16 bytes, where it expects to find information about the media type (“RIFF…AVI LIST” in this example):
GET /content/media/object_id=392191&res_id=0&ext=.avi HTTP/1.1 Range: bytes=0-15 Host: 192.168.10.50:49152 Accept: */*
After that first few requests for media type and AVI index (which is at the end of the file btw) the player requests in packages of 256kb. With my sample file that results in around 20 HTTP GETs per second.
Remote MPEG2-TS
I tried the same thing with VDR’s streaming plugin as an external source, that I manually added to Mediatomb as http-get, with mimetype video/mpeg. Again the player requests a partial:
GET /TS/S19.2E-1-1082-20002 HTTP/1.1 Range: bytes=0-4095 Host: 192.168.10.50:3000 Accept: */*
The streaming plugin’s HTTP server ignores the Range parameter and answers with a HTTP 200 and begins streaming video unlimited. After about 5 seconds the player resets the TCP connection and shuts down.
Local MPEG2-TS
Here I made a short recording with wget as described above and played it through Mediatomb. At first there is again a 16 byte partial for the media type (video/mp2t seems to be the correct mime type btw) and then this:
GET /content/media/object_id=520833&res_id=0&ext=.ts HTTP/1.1 Range: bytes=0-1048576 Host: 192.168.10.50:49152 Accept: */* transferMode.dlna.org: Streaming HTTP/1.1 206 Partial Content CONTENT-LENGTH: 1048577 CONTENT-TYPE: video/mp2t CONTENT-RANGE: bytes 0-1048576/6083972 DATE: Fri, 04 Dec 2009 21:22:31 GMT LAST-MODIFIED: Fri, 04 Dec 2009 21:14:39 GMT SERVER: Linux/2.6.27-9-generic, UPnP/1.0, MediaTomb/0.11.0 CONNECTION: close Content-Disposition: attachment; filename="myrecording.ts" Accept-Ranges: bytes
The whole file is around 6MB and here 1MB is requested. Curiously the reply was only a few kb according to Wireshark… After that there are more partials each 256kb in size.
I tried the whole thing again with a bigger/longer file (36MB). This is how the datarate of this playback looks like:

Definitely progressive downloading or something strange (retrys? re-downloads?) going on in the first 10 seconds.

