masmu / pulseaudio-dlna

A lightweight streaming server which brings DLNA / UPNP and Chromecast support to PulseAudio and Linux
GNU General Public License v3.0
1.25k stars 162 forks source link

cant stream to hamemusic soundrouter #40

Closed billsbro closed 9 years ago

billsbro commented 9 years ago

hi

I am using a Hame UPNP/DLNA soundrouter (http://hamedata.com/hamemusic/hamemusic-help.html) to stream sound over wifi to a regular stereo amp. The device works just fine with my droid smartphone and tablet, using the bubbleupnp app. To stream audio from my ubuntu 14.04 laptop your solution would be perfect. But I cant get it to stream the audio.

The discovery of the soundrouter works as long as I connect my laptop to the hame wifi network with its own IP range and SSID. This is different from the android devices that discover the soundrouter even if they are connected to the regular home wifi network.

So here is what I do for discovery and what I get in return in the terminal bb@dell6410:~$ pulseaudio-dlna Using localhost: 192.168.169.2:8080 INFO:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.169.1 INFO:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.169.1 INFO:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.169.1 INFO:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.169.1 INFO:root:Discovery complete. INFO:root:Found devices:

INFO:root:You can now use your upnp devices! INFO:root:PulseWatcher.on_device_updated "/org/pulseaudio/core1/sink1" INFO:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.169.1 192.168.169.1 - - [16/Apr/2015 22:31:08] "GET /hamemusic517a.stream HTTP/1.0" 200 - INFO:root:starting sending stream to "HameMusic_517a" INFO:root:"HameMusic_517a" registered. INFO:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.169.1 INFO:root:"HameMusic_517a" is playing. INFO:root:stream closed. cleaning up remaining procecces INFO:root:PulseWatcher.on_new_playback_stream "/org/pulseaudio/core1/playback_stream26" INFO:root:PulseWatcher.on_playback_stream_removed "/org/pulseaudio/core1/playback_stream26" INFO:root:PulseWatcher.on_new_playback_stream "/org/pulseaudio/core1/playback_stream27" INFO:root:PulseWatcher.on_playback_stream_removed "/org/pulseaudio/core1/playback_stream27" As soon as I start playing I get INFO:root:"HameMusic_517a" is playing. INFO:root:stream closed. cleaning up remaining procecces In soundsettings the device is visible, running test sounds gives me the same results. All help would be very much appreciated. In Linux I have some experience but not all that much.
masmu commented 9 years ago

Which version of ubuntu are you using?

Please open a new issue for the discovery thing. Just to keep things seperate from each other.

You can try the latest development version if you want. There are many bug fixes in there.

For that first remove the version you installed by package sudo apt-get remove pulseaudio-dlna

Then make sure you installed git. sudo apt-get install git

Make sure you installed the dependencies which are new in contrast to the version you installed: sudo apt-get install python-setuptools python-protobuf python-notify2 faac

Then make a test directory somewhere, e.g. in your home folder: mkdir ~/test

Go into it: cd ~/test

Clone the repository: git clone https://github.com/masmu/pulseaudio-dlna.git

Go to the source folder: cd pulseaudio-dlna

Checkout the development branch: git checkout refactor/streaming-server

Set it up: make venv

Run the development version: bin/pulseaudio-dlna

If it does not work, provide a debug.log. Since this will get very long, use that command: bin/pulseaudio-dlna --debug 2>&1 | tee -a debug.log

It will create a debug.log you can upload somewhere and paste the link here.

If you want to uninstall it, just delete your test folder. Since it won't installed into your system this is all you have to do.

billsbro commented 9 years ago

thanks

I got stuck at the make venv cmd

virtualenv --system-site-packages -p python2.7 . make: virtualenv: Opdracht niet gevonden make: *\ [bin/pip] Fout 127 bb@dell6410:~/dlnatest/pulseaudio-dlna$

(command not found) (error 127)

masmu commented 9 years ago

Sorry, i missed that ..

sudo apt-get install python-dev python-virtualenv

billsbro commented 9 years ago

thanks again

here's the link to the debug.log , unfortunately it didnt work, I am connecting through the devices network. I appreciate your effort

http://1drv.ms/1D2wCcj

masmu commented 9 years ago

@billsbro You are welcome!

I looked into your debug.log and everything looks good, besides that your device does not accept the stream. It requests it and closes the connection immediately. So i guess for some reason it does not like it. There is an odd thing: The devices user-agent is wget?!

Could you provide me a log for the output of pactl list sink-inputs while you are playing some music or watching a movie?

Did you try a different encoder? Your device provides that it is capable of playing FLAC. So try bin/pulseaudio --encoder flac You could also try to change the bitrate for mp3. Perhaps it is not capable of doing a constant bitrate of 192. That would be strange but it is worth a try. So try: bin/pulseaudio --encoder mp3 --bit-rate 128

Could you give me a direct link to your device? I searched on google for it and got zero results, which is strange. The website is on korean and despite random clicking on it i was not able to find it.

billsbro commented 9 years ago

I dont really understand your question (Could you provide me a log for the output of pactl list sink-inputs while you are playing some music or watching a movie?) Do you mean the list of audio devices in the system settings? (ie : Loudspeakers internal, Hamemusic_517a (DLNA) and 42A650_Series (DLNA). The device plays several mp3 bitrates (I can play mp3 through Android phone and Tablet without any trouble) I will try flac but I have to get those first.

The device refers to http://www.plutinosoft.com/platinum/ for libraries. I cant find any documentation in English either, I got it through amazon Germany.

I see that they added the soundrouter to the website now, this is it but its in asian http://www.hamedata.com.cn/goods.php?id=20

edit : for what its worth : I can stream from the laptop using pulseaudio-dlna to my android phone when Bubble UPNP is running. So all devices work together except for the combination of the ubuntu laptop with the soundrouter for whatever reason..

masmu commented 9 years ago

I just need the output of pactl list sink-inputs. And you need to play music or stuff while doing that, because otherwise there won't be the necessary information. E.g. mine looks like:

Senkeneingabe #24
        Treiber: protocol-native.c
        Besitzermodul: 11
        Client: 22
        Senke: 1
        Sample-Spezifikation: s16le 2ch 44100Hz
        Kanalzuordnung: front-left,front-right
        Format: pcm, format.sample_format = "\"s16le\""  format.rate = "44100"  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
       ...

I want to check your internal encoding, the values of Format.

billsbro commented 9 years ago

I tried flac, too bad it's a no show either.

Sink Input #8 Driver: protocol-native.c Owner Module: 9 Client: 28 Sink: 0 Sample Specification: float32le 2ch 44100Hz Channel Map: front-left,front-right Format: pcm, format.sample_format = "\"float32le\"" format.channels = "2" format.rate = "44100" format.channel_map = "\"front-left,front-right\"" Corked: no Mute: no Volume: 0: 90% 1: 90% 0: -2,75 dB 1: -2,75 dB balance 0,00 Buffer Latency: 98117 usec Sink Latency: 64267 usec Resample method: copy Properties: media.name = "'Haus am See' door 'Heino'" application.name = "gmusicbrowser" native-protocol.peer = "UNIX socket client" native-protocol.version = "28" media.role = "music" application.icon_name = "gmusicbrowser" application.process.id = "3210" application.process.user = "bb" application.process.host = "dell6410" application.process.binary = "perl" application.language = "nl_NL.UTF-8" window.x11.display = ":0.0" application.process.machine_id = "dfe23f74122da538a1d322aa538b568c" application.process.session_id = "c2" module-stream-restore.id = "sink-input-by-media-role:music" media.title = "Haus am See" media.artist = "Heino"

Mfg billsbro

masmu commented 9 years ago

Thanks for your report. There is a neat little difference. Your PCM is encoded with float32le. Mine with s16le. I need to do some testings about that.

Since your device creates 2 problems, i ordered one myself. It should arrive tomorrow, so stay tuned and expect some more results at the weekend.

billsbro commented 9 years ago

you sure go all the way, thanks in advance

masmu commented 9 years ago

So, i got mine running. They device uses HTTP/1.0 and requires to send a Content-Length header. Could you please try the latest version?

Go to the source folder: cd pulseaudio-dlna

Grab the latest changes: git pull

Run it: bin/pulseaudio-dlna

billsbro commented 9 years ago

I got sound!

This was priority number one, if you don't mind I will open another call for the network related issue. Btw do you have that same issue with this device?

billsbro commented 9 years ago

thanks man, I noticed your paypal account for a beer or two, zum Wohl.

Marc

masmu commented 9 years ago

Thank you very much! I am glad it worked.

I am just using that device with cable. But the cable setup is strange too. There are 2 Ethernet ports. One with WAN and one with LAN labelled. I am just able to use the device when it is attached to the WAN port. Normally you should plug in the DSL cable there, not that cable to your LAN. Which one are you using? Are you using cable network at all?

I will take a deeper look at that the next days. Could you describe your network setup, so that i can try to imitate it?

Gezondheid!

billsbro commented 9 years ago

I run it wirelessly but I will do the describtion in the dedicated thread, by your request.

So, I am still running this in in the development version I reckon but it will be available as a fix in the next stable release?

mfg

Marc

masmu commented 9 years ago

Yes, please use the other thread :smile:

This fix will be in the next release. The one way or the other. The problem is, i am not 100% sure if that what i am doing is up to the specification. Perhaps there will be additional flag, such as --http10-fake-content-length ...

billsbro commented 9 years ago

hmm the audio connection is lost sometimes and it streams back to the internal laptops speakers, I will see if I can find any repeatable logic

masmu commented 9 years ago

@billsbro: Since the Hame Soundrouter does not act accordingly to the HTTP 1.0 specification, you have to use the --fake-http10-content-length flag to make your device work in 0.4.0.