Emulating LocationFree Video Streams

General, off-topic discussion about things of interest to the members of these forums.

Moderator: cheriff

Post Reply
LiquidIce
Posts: 55
Joined: Mon Apr 04, 2005 1:15 am
Contact:

Emulating LocationFree Video Streams

Post by LiquidIce »

I was just reading some information about the latest PSP firmware and noticed that it now supports LocationFree TV. I have seen this in action with a 12" panel and the interface is really nice. The stream is good quality, and considering it's wifi, there is not much delay when switching channels.

I am curious to try this on my PSP, but not quite ready to upgrade my firmware from the beloved 1.5 firmware which supports Lua.

What I am even more curious about are these LocationFree Base stations. They appear to be using standard 802.11 protocol to connect the base to the display.

I was wondering if anyone has looked at the data being sent over the LocationFree WIFI connetion to see what codecs it is using for the stream. Is it some standard H.263 / H.264 codec that could be replicated on the PC to stream video from your PC to the PSP?

It would be very cool to be able to wirelessly broadcast your own TV stations to your PSP using the software already built in to the PSP firmware.
Xfennec
Posts: 2
Joined: Fri May 06, 2005 1:17 am
Contact:

Post by Xfennec »

Hi,

I can give some informations about LocationFree system (LF-B1 base, EU version):

- The PSP LocationFree Player (2.70) search for a base, sending UDP broadcast packets. When the base is found, you must configure a few things and the PSP generates a (binary) file on the Memory Stick. Until this file exists on the MS, you can directly enter the LocationFree Player and setup the whole thing, even if you're not connected to the base yet. I will put a link to this file here.

- All the transport of the stream is done with TCP ! The LocationFree protocol is a mix of HTTP and tunneled RTSP (port 5021, by default).

- Here is the whole TCP stream (both sides) when I connect the PSP to the base (I've removed my IP address and the MAC adress of the PSP ... see the log):

Code: Select all

GET /netav/message0 HTTP/1.1
User-Agent: LFX HTTP Tunnel Client 1; model=LF-PSP, modeltype=6, generation=3, support=1/2/3
X-SessionCookie: 267
Pragma: no-cache
Cache-control: no-cache, no-store
Host: 82.xxx.xxx.xxx
Connection: Keep-Alive

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm="NetAV", nonce="2d1b98bdb07a745d4253284974dacfe6", algorithm=MD5, domain="/netav/", qop="auth",
Pragma: no-cache
Cache-control: no-cache, no-store

GET /netav/message0 HTTP/1.1
User-Agent: LFX HTTP Tunnel Client 1; model=LF-PSP, modeltype=6, generation=3, support=1/2/3
X-SessionCookie: 267
Pragma: no-cache
Cache-control: no-cache, no-store
Host: 82.xxx.xxx.xxx
Connection: Keep-Alive
Authorization: Digest username="HERE_THE_PSP_MAC_ADDR", realm="NetAV", nonce="2d1b98bdb07a745d4253284974dacfe6", uri="/netav/message", response="7093e415f927519bb5736d87f020044a", algorithm=MD5, cnonce="11a7cc6800971eee6d1b23c75bdd7ed4", qop="auth", nc=00000001

HTTP/1.1 200 OK
Authentication-Info: qop="auth", rspauth="none", cnonce="11a7cc6800971eee6d1b23c75bdd7ed4", nc=00000001
Pragma: no-cache
Cache-control: no-cache, no-store
Server:  model=LF-B1EU, modeltype=3, generation=3, support=1/2/3

GET /connect HTTP/1.1
User-Agent: LFX HTTP Tunnel Client 1; model=LF-PSP, modeltype=6, generation=3, support=1/2/3
X-SessionCookie: 267
Pragma: no-cache
Cache-control: no-cache, no-store
Host: 82.xxx.xxx.xxx
Connection: Keep-Alive

HTTP/1.0 200 OK
Server: netAV
Connection: close
Date: Thu, 10 Jul 1980 10:30:00 GMT
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/x-rtsp-tunnelled

RTSP/1.0 200 OK
Server: Havana/1.25
CSeq: 1
Content-Type: application/sdp
Content-Base: rtsp://82.xxx.xxx.xxx:5021/DSP/vbr=500000.vmbr=850000.vfr=25.vw=352.vh=288.vfl=0x119.abr=48000.ambr=48000.asr=24000.afl=0x116.vtype=3./
Content-Length: 581

v=0
o=StreamingServer 751639683333 1 IN IP4 10.0.0.1
s=/DSP/vbr=500000.vmbr=850000.vfr=25.vw=352.vh=288.vfl=0x119.abr=48000.ambr=48000.asr=24000.afl=0x116.vtype=3.
c=IN IP4 0.0.0.0
i=DSP session streamed by "netAV"
t=0 0
a=tool:netAV
m=video 0 RTP/AVP 96
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 config=000001200088400670c2c1090510
a=control:trackID=2
m=audio 0 RTP/AVP 97
a=rtpmap:97 mpeg4-generic/24000/2
a=fmtp:97 profile-level-id=1; bitrate=48000; cpresent=0; object=2; mode=AAC-hbr; config=1310; SizeLength=13; IndexLength=3; IndexDeltaLength=3;
a=control:trackID=1
RTSP/1.0 200 OK
Server: Havana/1.25
CSeq: 2
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Session: 1

RTSP/1.0 200 OK
Server: Havana/1.25
CSeq: 3
Transport: RTP/AVP/TCP;unicast;interleaved=2-3
Session: 1

RTSP/1.0 200 OK
Server: Havana/1.25
CSeq: 4
Session: 1
I'm trying to write a "fake" base using a small program, but the PSP seems to wait for something ... Perhaps I must respect packet sizes from the real base ...

More to come.
Post Reply