LG BD390 Network Blu-ray Player

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:

mp2-ts_upnp

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