PDA

View Full Version : LMS-to-uPnP on FreeBSD 11.1 - squeeze2upnp-amd64 - won't work



x11max
2018-01-23, 04:24
I didn't found any suitable uPnP plugin for FreeBSD 11.1 amd64 architecture and therefore i have compiled it from source LMS-to-uPnP.

The plugin files (see below) have been created successfully, also the Bridge starts up successfully too.
After a network scan was done my uPnP Players are recognized by LMS.

For example: the LMS information details:

Player Information : Information on all identified devices connected to Logitech Media Server

DABMAN i200 CD
Player Model: SqueezeLite
Player Type: squeezelite
Player IP Address: 192.168.10.33
Player MAC Address: bb:bb:8c:f2:a0:38

But streaming to the client fails. The client display details:

Connecting....
Buffering 25%..100%...
Stop Playing

The LMS debug log details at least: device off or not controlled by LMS

[12:05:20.022017] stream_sock:421 [0x64b850] header: GET /wdr/wdr4/live/mp3/128/stream.mp3?ar-distributor=f0a1 HTTP/1.0
Cache-Control: no-cache
Connection: close
Accept: */*
Host: wdr-wdr4-live.cast.addradio.de
User-Agent: iTunes/4.7.1 (Unix; N; freebsd; amd64-freebsd; EN; utf8) SqueezeCenter, Squeezebox Server, Logitech Media Server/7.9.1/1502265250
Icy-Metadata: 1

[12:05:20.022069] sq_callback:266 [0x6aa960]: device off or not controlled by LMS

Actually i do not recognized what can be wrong here. Maybe the log file helps to see more.

I also created the plugins for an RPI3 running FreeBSD on arm64. The behaviour on arm64 is the same like an amd64. Maybe i have someting made wrong during compilation.
FreeBSD raspberry 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r326378: Thu Nov 30 13:34:13 UTC 2017 root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64


root@freebsd:~ # cd /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin
root@freebsd:~ # ls -ltr
.....
-rwxr-xr-x 1 lms lms 303032 Jan 23 10:25 squeeze2upnp-amd64
-rwxr-xr-x 1 lms lms 1328440 Jan 23 10:25 squeeze2upnp-amd64-static

root@freebsd:~ # file squeeze2upnp-amd64
squeeze2upnp-amd64: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 11.1, FreeBSD-style, stripped

root@freebsd:~ # ps auxww | grep -i upnp
lms 91671 0.0 0.0 29316 4212 - S 11:46 0:00.02 /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin/squeeze2upnp-amd64 -Z -I -b 192.168.10.33 -f /Library/LMS/slimserver/Logs/upnpbridge.log -d all=debug -x /Library/LMS/slimserver/prefs/upnpbridge.xml



root@raspberry:~ # ls -ltr /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin
....
-rwxr-xr-x 1 lms lms 396752 Jan 23 10:30 squeeze2upnp-arm64
-rwxr-xr-x 1 lms lms 1479544 Jan 23 10:30 squeeze2upnp-arm64-static

x11max
2018-01-31, 01:55
I didn't found any suitable uPnP plugin for FreeBSD 11.1 amd64 architecture and therefore i have compiled it from source LMS-to-uPnP.

The plugin files (see below) have been created successfully, also the Bridge starts up successfully too.
After a network scan was done my uPnP Players are recognized by LMS.

For example: the LMS information details:

Player Information : Information on all identified devices connected to Logitech Media Server

DABMAN i200 CD
Player Model: SqueezeLite
Player Type: squeezelite
Player IP Address: 192.168.10.33
Player MAC Address: bb:bb:8c:f2:a0:38

But streaming to the client fails. The client display details:

Connecting....
Buffering 25%..100%...
Stop Playing

The LMS debug log details at least: device off or not controlled by LMS

[12:05:20.022017] stream_sock:421 [0x64b850] header: GET /wdr/wdr4/live/mp3/128/stream.mp3?ar-distributor=f0a1 HTTP/1.0
Cache-Control: no-cache
Connection: close
Accept: */*
Host: wdr-wdr4-live.cast.addradio.de
User-Agent: iTunes/4.7.1 (Unix; N; freebsd; amd64-freebsd; EN; utf8) SqueezeCenter, Squeezebox Server, Logitech Media Server/7.9.1/1502265250
Icy-Metadata: 1

[12:05:20.022069] sq_callback:266 [0x6aa960]: device off or not controlled by LMS

Actually i do not recognized what can be wrong here. Maybe the log file helps to see more.

I also created the plugins for an RPI3 running FreeBSD on arm64. The behaviour on arm64 is the same like an amd64. Maybe i have someting made wrong during compilation.
FreeBSD raspberry 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r326378: Thu Nov 30 13:34:13 UTC 2017 root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64


root@freebsd:~ # cd /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin
root@freebsd:~ # ls -ltr
.....
-rwxr-xr-x 1 lms lms 303032 Jan 23 10:25 squeeze2upnp-amd64
-rwxr-xr-x 1 lms lms 1328440 Jan 23 10:25 squeeze2upnp-amd64-static

root@freebsd:~ # file squeeze2upnp-amd64
squeeze2upnp-amd64: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 11.1, FreeBSD-style, stripped

root@freebsd:~ # ps auxww | grep -i upnp
lms 91671 0.0 0.0 29316 4212 - S 11:46 0:00.02 /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin/squeeze2upnp-amd64 -Z -I -b 192.168.10.33 -f /Library/LMS/slimserver/Logs/upnpbridge.log -d all=debug -x /Library/LMS/slimserver/prefs/upnpbridge.xml



root@raspberry:~ # ls -ltr /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin
....
-rwxr-xr-x 1 lms lms 396752 Jan 23 10:30 squeeze2upnp-arm64
-rwxr-xr-x 1 lms lms 1479544 Jan 23 10:30 squeeze2upnp-arm64-static


Just test it with your bin file: The result is a little bit different to mine. The bin file crashes immediately after starting and is restarting in a loop afterwards.

In the trace i see the same message comparing to trace regarding the uuid : #1 0x000000000042ddd1 in uuid_compare ()

root@freebsd:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin # gdb --args /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin/squeeze2upnp-bsd-x64 -Z -I -b 192.168.10.33 -d all=debug -x /Library/LMS/slimserver/prefs/upnpbridge.xml
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...(no debugging symbols found)...
(gdb) run
Starting program: /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin/squeeze2upnp-bsd-x64 -Z -I -b 192.168.10.33 -d all=debug -x /Library/LMS/slimserver/prefs/upnpbridge.xml
(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...[08:46:32.900378] main:1569 Starting squeeze2upnp version: v0.3.0.0.2 (Jan 29 2018 @ 20:38:28)
[08:46:32.900782] uPNPInitialize:1317 UPnP initialized
[08:46:33.007734] AddMRDevice:1194 [0x6ac840]: adding renderer ([TV]Samsung LED40)
[08:46:33.007749] GetProtocolInfo:336 uPNP http://192.168.10.81:7676/smp_20_ GetProtocolInfo
[08:46:33.203154] GetProtocolInfo:347 [0x6ac840]: ProtocolInfo http-get:*:.......
......
08:46:33.203413] sq_run_device:1153 Buffer path /tmp/
[08:46:33.203441] stream_thread_init:296 [0x64d730] streambuf size: 2457600
[08:46:33.204212] output_mr_thread_init:810 [0x64d730] init output media renderer
[08:46:33.204243] UpdateThread:1054 Updating configuration /Library/LMS/slimserver/prefs/upnpbridge.xml
[08:46:33.204274] discover_server:782 [0x64d730] sending discovery
[08:46:33.204389] discover_server:811 [0x64d730] got response from: 192.168.10.33:3483
[08:46:33.204397] slimproto:837 squeezelite [0x64d730] <=> player [0x6ac840]
[08:46:33.204399] slimproto:838 [0x64d730] connecting to 192.168.10.33:3483
[08:46:33.204425] slimproto:869 [0x64d730] connected
[08:46:33.204429] sendHELO:109 [0x64d730] mac: 90:f1:aa:2a:11:fa
[08:46:33.204432] sendHELO:110 [0x64d730] cap: Model=squeezelite,ModelName=SqueezeLite,AccuratePl ayPoints=0,HasDigitalOut=1,MaxSampleRate=48000,pcm ,flc,mp3
[08:46:33.254940] UpdateThread:991 [0x6ac840] UPnP keep alive: [TV]Samsung LED40
[08:46:33.254951] UpdateThread:1001 [0x6ac840] UPnP keep alive: [TV]Samsung LED40
[08:46:33.306255] process:530 [0x64d730] strm
[08:46:33.306265] process_strm:219 [0x64d730] strm command q
[08:46:33.306267] output_flush:843 [0x64d730]: flush output buffer
[08:46:33.306287] sq_callback:325 [0x6ac840]: device off or not controlled by LMS
[08:46:33.306356] process:530 [0x64d730] strm
[08:46:33.306360] process_strm:219 [0x64d730] strm command q
[08:46:33.306362] output_flush:843 [0x64d730]: flush output buffer
[08:46:33.306370] sq_callback:325 [0x6ac840]: device off or not controlled by LMS
[08:46:33.306413] process:530 [0x64d730] setd
[08:46:33.306416] sendSETDName:204 set playername: [TV]Samsung LED40
[08:46:33.306425] process:530 [0x64d730] setd
[08:46:33.306486] process:530 [0x64d730] aude
[08:46:33.306489] process_aude:422 [0x64d730] on/off using aude 1
[08:46:33.306491] sq_callback:321 [0x6ac840]: device set on/off 1
[08:46:33.306539] process:530 [0x64d730] audg
[08:46:33.306542] process_audg:436 [0x64d730] (old) audg gainL: 46 gainR: 46
[08:46:33.354967] CheckAndLock:468 device is NULL
[08:46:33.354978] CheckAndLock:468 device is NULL
[08:46:33.354980] CheckAndLock:468 device is NULL
[...
[08:46:33.361987] MasterHandler:888 [0x6ac840]: subscribe success
[08:46:33.362280] _ProcessVolume:629 [0x6ac840]: UPnP Volume local change 8

Program received signal SIGFPE, Arithmetic exception.
0x000000000041361b in MasterHandler ()
(gdb) bt
#0 0x000000000041361b in MasterHandler ()
#1 0x000000000042ddd1 in uuid_compare ()
#2 0x0000000000000000 in ?? ()
(gdb) q
The program is running. Exit anyway? (y or n) y
root@freebsd:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin #

My system environment:

root@freebsd:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin # bsdinfo

OS: FreeBSD amd64
Hostname: freebsd
Kernel: 11.1-RELEASE-p4
RAM: 4007M / 16193M
Processes: 114
CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz

root@freebsd:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin # uname -UK
1101001 1101001
root@freebsd:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin # uname -a
FreeBSD freebsd 11.1-RELEASE-p4 FreeBSD 11.1-RELEASE-p4 #0: Tue Nov 14 06:12:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
root@freebsd:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin #
changed.

Further i have installed 4 additional upnp ports i need for other applications. I will go to delete them to see whether or not the pattern will be changed.

root@freebsd:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin # pkg info | grep -u upnp
gupnp-1.0.2_2 Framework for UPnP devices
hupnp-1.0.0_1 Library for building UPnP devices and control points
kio-upnp-ms-1.0.0.g20110808_7 KIO slave to access UPnP MediaServers
upnp-1.6.22,1 Universal Plug and Play Software Development Kit

Hi philippe_44,

I got it working. I recompiled LMS-to-uPnP with the new version (squeeze2upnp version: v0.3.0.0.2) and it is working fine now on my hardware. Pls. see attachment.
If you would like to have the bin files let me know, pls.

Now i will do the same for freebsd 12 running on RPI3, where i have the same issue.

x11max
2018-01-31, 05:17
Hi philippe_44,

I got it working. I recompiled LMS-to-uPnP with the new version (squeeze2upnp version: v0.3.0.0.2) and it is working fine now on my hardware. Pls. see attachment.
If you would like to have the bin files let me know, pls.

Now i will do the same for freebsd 12 running on RPI3, where i have the same issue.

Now squeeze2upnp version: v0.3.0.0.2 also running on RPI3:
root@raspberry:/Library/LMS/slimserver/prefs # uname -a
FreeBSD raspberry 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r326378: Thu Nov 30 13:34:13 UTC 2017 root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64

root@raspberry:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin # ls -ltr *arm64*
-rwxr-xr-x 1 lms lms 396816 Jan 31 11:57 squeeze2upnp-arm64
-rwxr-xr-x 1 lms lms 1479608 Jan 31 11:57 squeeze2upnp-arm64-static
root@raspberry:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin #

Starting Squeeze2upnp: /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin/squeeze2upnp-arm64 -Z -I -b 192.168.10.3 -f /Library/LMS/slimserver/Logs/upnpbridge.log -d all=debug -x /Library/LMS/slimserver/prefs/upnpbridge.xml
[12:04:55.739040] main:1569 Starting squeeze2upnp version: v0.3.0.0.2 (Jan 31 2018 @ 11:57:15)
[12:04:55.753633] uPNPInitialize:1317 UPnP initialized
[12:05:06.953950] AddMRDevice:1194 [0xe02c0]: adding renderer (TechniMedia UHD+)
[12:05:06.954362] GetProtocolInfo:336 uPNP http://192.168.10.80:9085/dev1/srv0/control GetProtocolInfo
[12:05:06.974249] GetProtocolInfo:347 [0xe02c0]: ProtocolInfo http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,http-get:*:audio/x-ms-wm
12:05:07.011182] slimproto:838 [0x811c0] connecting to 192.168.10.3:3483
[12:05:07.011730] UpdateThread:991 [0xe02c0] UPnP keep alive: TechniMedia UHD+
[12:05:07.011805] UpdateThread:1001 [0xe02c0] UPnP keep alive: TechniMedia UHD+
[12:05:07.011956] slimproto:869 [0x811c0] connected
[12:05:07.012030] sendHELO:109 [0x811c0] mac: 00:08:c9:78:48:70
[12:05:07.012094] sendHELO:110 [0x811c0] cap: Model=squeezelite,ModelName=SqueezeLite,AccuratePl ayPoints=0,HasDigitalOut=1,MaxSampleRate=48000,pcm ,flc,mp3
[12:05:07.177664] UpdateThread:991 [0xe02c0] UPnP keep alive: TechniMedia UHD+

Now it's time to get ride of my macOS x86-tosh and replace it with my RPI3.

philippe_44
2018-01-31, 10:18
Now squeeze2upnp version: v0.3.0.0.2 also running on RPI3:
root@raspberry:/Library/LMS/slimserver/prefs # uname -a
FreeBSD raspberry 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r326378: Thu Nov 30 13:34:13 UTC 2017 root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64

root@raspberry:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin # ls -ltr *arm64*
-rwxr-xr-x 1 lms lms 396816 Jan 31 11:57 squeeze2upnp-arm64
-rwxr-xr-x 1 lms lms 1479608 Jan 31 11:57 squeeze2upnp-arm64-static
root@raspberry:/Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin #

Starting Squeeze2upnp: /Library/LMS/slimserver/Cache/InstalledPlugins/Plugins/UPnPBridge/Bin/squeeze2upnp-arm64 -Z -I -b 192.168.10.3 -f /Library/LMS/slimserver/Logs/upnpbridge.log -d all=debug -x /Library/LMS/slimserver/prefs/upnpbridge.xml
[12:04:55.739040] main:1569 Starting squeeze2upnp version: v0.3.0.0.2 (Jan 31 2018 @ 11:57:15)
[12:04:55.753633] uPNPInitialize:1317 UPnP initialized
[12:05:06.953950] AddMRDevice:1194 [0xe02c0]: adding renderer (TechniMedia UHD+)
[12:05:06.954362] GetProtocolInfo:336 uPNP http://192.168.10.80:9085/dev1/srv0/control GetProtocolInfo
[12:05:06.974249] GetProtocolInfo:347 [0xe02c0]: ProtocolInfo http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,http-get:*:audio/x-ms-wm
12:05:07.011182] slimproto:838 [0x811c0] connecting to 192.168.10.3:3483
[12:05:07.011730] UpdateThread:991 [0xe02c0] UPnP keep alive: TechniMedia UHD+
[12:05:07.011805] UpdateThread:1001 [0xe02c0] UPnP keep alive: TechniMedia UHD+
[12:05:07.011956] slimproto:869 [0x811c0] connected
[12:05:07.012030] sendHELO:109 [0x811c0] mac: 00:08:c9:78:48:70
[12:05:07.012094] sendHELO:110 [0x811c0] cap: Model=squeezelite,ModelName=SqueezeLite,AccuratePl ayPoints=0,HasDigitalOut=1,MaxSampleRate=48000,pcm ,flc,mp3
[12:05:07.177664] UpdateThread:991 [0xe02c0] UPnP keep alive: TechniMedia UHD+

Now it's time to get ride of my macOS x86-tosh and replace it with my RPI3.

Good - I have one question, still: why FreeBSD on a Pi? :)

x11max
2018-02-01, 11:40
Good - I have one question, still: why FreeBSD on a Pi? :)

Because FreeBSD Version 12 is working fine and is stable.
Daily business in linux is terrible enough. For private use linux does not fit my needs and is a no go.Linux is a thing i do not need.

Alex001
2018-03-25, 16:39
Hi x11max, I am trying to build on 32bit FreeBSD 11.1 and have no success. Could you please share the steps you used for your 64bit build? There's no other mentioning on the Internet about anyone else making it work on FreeBSD. Thanks!