• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Review of NanoPi NEO2: World's Smallest Audio Streamer

QMuse

Major Contributor
Joined
Feb 20, 2020
Messages
3,124
Likes
2,786
Brutefir certainly does something that triggers the dropouts, unless you pin it to a single cpu core. I gather there's something else that's often running on Volumio that triggers it too, but I forget what (database?). I've not had dropouts on PiCorePlayer despite trying to trigger them. Not tried with RoPieee.

Correct - the dropouts are a USB thing.

Dropouts are happening because on RPI3 USB and Network share the same bus, so heavy network traffic (like pulling music from NAS) will make them happen.
 

somebodyelse

Major Contributor
Joined
Dec 5, 2018
Messages
3,793
Likes
3,104
Dropouts are happening because on RPI3 USB and Network share the same bus, so heavy network traffic (like pulling music from NAS) will make them happen.
Popular theory but demonstrably incorrect, although heavy network traffic can make it more likely. With PiCorePlayer I can stream glitch-free 24/352 flac that get resampled to the 4 channels of 32/192 that's the maximum the audio interface will take. With raspbian running brutefir sending to the audio interface at 32/96 the glitching occurs playing the same file, whether or not it's using the wired network interface. Pin brutefir to a single core and the glitching stops. Admittedly I haven't tried unloading the network interface module, or using a pi model that doesn't have a usb hub.
 

QMuse

Major Contributor
Joined
Feb 20, 2020
Messages
3,124
Likes
2,786
Popular theory but demonstrably incorrect, although heavy network traffic can make it more likely.

It's not a theory, I tested this myself with RPI3 and RPI4. With RPI3, Volumio only, before BruteFIR, everything worked fine. Dropouts started when I installed BruteFIR but only when playing files from NAS, web radio worked ok all the time. With HiREs files dropouts were more frequent because of heavier network traffic. CPU utilisation was under 16%, so not related to that.

I didn't try pinning BruteFIR to single core, though.

With RPI4 everything worked fine in any scenario.
 

somebodyelse

Major Contributor
Joined
Dec 5, 2018
Messages
3,793
Likes
3,104
No need. If you say pinning brutefir to single core solves the problem than you're right and I'm wrong. :)
Well...it did for me. I think I posted the details of how to do it, but I don't remember where :facepalm: I should have notes if they'd be any help.
 

Aldoszx

Active Member
Joined
Aug 19, 2019
Messages
292
Likes
190
I can try to recompile another one if the current OS image (the one for roonbridge?) works already for you.
Could you please test it ? It seems that this image may not work depending on network configuration (dhcp problem).

I have just tested your image and it is working great !
No glitches or another problems.
Thank you !

Now I am wondering if it is possible to use a wifi adapter. I suppose i need the drivers.
It would be also great to use at least the buttons if not the OLED screen.
It would be usefull for me to ON/OFF the NEO from buttons.
 

Aldoszx

Active Member
Joined
Aug 19, 2019
Messages
292
Likes
190
Good news.
bzfrp helped me to set Armbian Buster to work with my NEO2 !
I have now the smallest RoonBridge working.

The trick was to change the cpu frequency in /etc/cpufrequtils to be like that:

ENABLE=true
MIN_SPEED=816000
MAX_SPEED=816000
GOVERNOR=userspace


Now, i am trying to figure out how to install Nanohat OLED.
I've tried on DietPi, but with no luck.
On DietPi I can install OLED but the streaming problems remains even with cpu freq settings changed.

Thank you for help !
 

Aldoszx

Active Member
Joined
Aug 19, 2019
Messages
292
Likes
190
Just manged to install Nanohat OLED on Armbian Buster.
 

Attachments

  • neo2_player.jpg
    neo2_player.jpg
    789.4 KB · Views: 252

Aldoszx

Active Member
Joined
Aug 19, 2019
Messages
292
Likes
190
I'm trying to replicate this. Can you share your image or your method? Sounds like you started with armbian buster and then installed on top of it versus starting with buildroot? I have the same device...
Sure, this is the package I am using to install NanoHAT OLED (you have to delete txt extension).
Steps:
1. install armbian-config:

apt install armbian-config

2. enable i2c via armbian-config
Alternative: Enable i2c0 through /boot/armbianEnv.txt

nano /boot/armbianEnv.txt

Add i2c0 to the overlays= line, for example if the line appears as follows:

overlays=usbhost1 usbhost2

Then add i2c0 with a space seperating it from the other values:

overlays=i2c0 usbhost1 usbhost2

3. install dependencies:

apt install build-essential git

4. copy attached archive to /home and install:

tar -pxvzf NanoHatOLED.tar.gz
cd NanoHatOLED
./install.sh


The script will install python 3.7 and all needed python modules.
Also the script install and enable oled.start service
That is working for me, with armbian buster minimal image.

Edit:
There is also another option, which i didn't test it, here, if you want to test it.
 

Attachments

  • NanoHatOLED.tar.gz.txt
    409.8 KB · Views: 101
Last edited:

Scott at home

New Member
Joined
May 19, 2020
Messages
3
Likes
2
Thank you that worked perfectly. I have shairport working great.

I'm trying to get upmpcli working following these steps:
https://www.lesbonscomptes.com/upmpdcli/upmpdcli-debian-build.txt
and these notes:
http://bz31.tuxfamily.org/dokuwiki/doku.php?id=nanopi_neo2

I get to here:
cd libnpupnp1-4.0.0/
debuild -us -uc

and the debuild returns an error:
|| echo './'`src/dispatcher/miniserver.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I./inc -I./inc -I./src/inc -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++11 -g -O2 -fdebug-prefix-map=/root/build/libnpupnp1/libnpupnp1-4.0.4=. -fstack-protector-strong -Wformat -Werror=format-security -c src/dispatcher/miniserver.cpp -fPIC -DPIC -o src/dispatcher/.libs/libnpupnp_la-miniserver.o
g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[3]: *** [Makefile:871: src/ssdp/libnpupnp_la-ssdpparser.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/root/build/libnpupnp1/libnpupnp1-4.0.4'
make[2]: *** [Makefile:565: all] Error 2
make[2]: Leaving directory '/root/build/libnpupnp1/libnpupnp1-4.0.4'
dh_auto_build: make -j4 returned exit code 2
make[1]: *** [debian/rules:16: override_dh_auto_build] Error 2
make[1]: Leaving directory '/root/build/libnpupnp1/libnpupnp1-4.0.4'
make: *** [debian/rules:10: build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
debuild: fatal error at line 1182:
dpkg-buildpackage -us -uc -ui failed

in the prior step i get this:
root@nanopineo2:~/build# apt-get source libnpupnp1
Reading package lists... Done
Need to get 523 kB of source archives.
Get:1 https://www.lesbonscomptes.com/upmpdcli/downloads/debian buster/main libnpupnp1 4.0.4-1~ppa1~buster (dsc) [2,003 B]
Get:2 https://www.lesbonscomptes.com/upmpdcli/downloads/debian buster/main libnpupnp1 4.0.4-1~ppa1~buster (tar) [516 kB]
Get:3 https://www.lesbonscomptes.com/upmpdcli/downloads/debian buster/main libnpupnp1 4.0.4-1~ppa1~buster (diff) [5,616 B]
Fetched 523 kB in 27s (19.7 kB/s)
dpkg-source: info: extracting libnpupnp1 in libnpupnp1-4.0.4
dpkg-source: info: unpacking libnpupnp1_4.0.4.orig.tar.gz
dpkg-source: info: unpacking libnpupnp1_4.0.4-1~ppa1~buster.debian.tar.xz
W: Download is performed unsandboxed as root as file 'libnpupnp1_4.0.4-1~ppa1~buster.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

so i wonder if that's the problem. Any ideas?
 

Aldoszx

Active Member
Joined
Aug 19, 2019
Messages
292
Likes
190
Have you tried to install it directly, without compiling?
Building for source is documented here.
It seems you have to install more dependencies and repos.
 
Last edited:

simbloke

Senior Member
Forum Donor
Joined
May 30, 2019
Messages
355
Likes
585
Location
North Wales, UK
@Scott at home
Don't know if this helps you but I run upmpdcli on my NAS and not the player. It doesn't matter so long as it has access to your network. In my case it was more responsive when adding an album full of tracks to the queue and starting playback.
 

Scott at home

New Member
Joined
May 19, 2020
Messages
3
Likes
2
Thanks for the help I don't see an arm64 debian or raspbian release??

oot@nanopineo2:/etc/apt/sources.list.d# vim upmpdcli.list
root@nanopineo2:/etc/apt/sources.list.d# sudo apt-get update
Hit:1 http://security.debian.org buster/updates InRelease
Hit:2 http://httpredir.debian.org/debian buster InRelease
Hit:3 http://httpredir.debian.org/debian buster-updates InRelease
Hit:4 http://httpredir.debian.org/debian buster-backports InRelease
Get:5 https://www.lesbonscomptes.com/upmpdcli/downloads/raspbian buster InRelease [2,369 B]
Hit:6 https://apt.armbian.com buster InRelease
Hit:7 https://www.lesbonscomptes.com/upmpdcli/downloads/debian buster InRelease
Get:8 https://www.lesbonscomptes.com/upmpdcli/downloads/raspbian buster/main armhf Packages [6,656 B]
Fetched 9,025 B in 5s (1,988 B/s)
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://www.lesbonscomptes.com/upmpdcli/downloads/raspbian buster InRelease' doesn't support architecture 'arm64'
root@nanopineo2:/etc/apt/sources.list.d#
 

Aldoszx

Active Member
Joined
Aug 19, 2019
Messages
292
Likes
190
So, there is not a deb package for arm64. You should install from sources.
 

bzfrp

Member
Joined
Dec 21, 2017
Messages
19
Likes
17
Thank you that worked perfectly. I have shairport working great.

I'm trying to get upmpcli working following these steps:
https://www.lesbonscomptes.com/upmpdcli/upmpdcli-debian-build.txt
and these notes:
http://bz31.tuxfamily.org/dokuwiki/doku.php?id=nanopi_neo2

I get to here:
cd libnpupnp1-4.0.0/
debuild -us -uc

and the debuild returns an error:
|| echo './'`src/dispatcher/miniserver.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I./inc -I./inc -I./src/inc -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++11 -g -O2 -fdebug-prefix-map=/root/build/libnpupnp1/libnpupnp1-4.0.4=. -fstack-protector-strong -Wformat -Werror=format-security -c src/dispatcher/miniserver.cpp -fPIC -DPIC -o src/dispatcher/.libs/libnpupnp_la-miniserver.o
g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[3]: *** [Makefile:871: src/ssdp/libnpupnp_la-ssdpparser.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/root/build/libnpupnp1/libnpupnp1-4.0.4'
make[2]: *** [Makefile:565: all] Error 2
make[2]: Leaving directory '/root/build/libnpupnp1/libnpupnp1-4.0.4'
dh_auto_build: make -j4 returned exit code 2
make[1]: *** [debian/rules:16: override_dh_auto_build] Error 2
make[1]: Leaving directory '/root/build/libnpupnp1/libnpupnp1-4.0.4'
make: *** [debian/rules:10: build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
debuild: fatal error at line 1182:
dpkg-buildpackage -us -uc -ui failed

in the prior step i get this:
root@nanopineo2:~/build# apt-get source libnpupnp1
Reading package lists... Done
Need to get 523 kB of source archives.
Get:1 https://www.lesbonscomptes.com/upmpdcli/downloads/debian buster/main libnpupnp1 4.0.4-1~ppa1~buster (dsc) [2,003 B]
Get:2 https://www.lesbonscomptes.com/upmpdcli/downloads/debian buster/main libnpupnp1 4.0.4-1~ppa1~buster (tar) [516 kB]
Get:3 https://www.lesbonscomptes.com/upmpdcli/downloads/debian buster/main libnpupnp1 4.0.4-1~ppa1~buster (diff) [5,616 B]
Fetched 523 kB in 27s (19.7 kB/s)
dpkg-source: info: extracting libnpupnp1 in libnpupnp1-4.0.4
dpkg-source: info: unpacking libnpupnp1_4.0.4.orig.tar.gz
dpkg-source: info: unpacking libnpupnp1_4.0.4-1~ppa1~buster.debian.tar.xz
W: Download is performed unsandboxed as root as file 'libnpupnp1_4.0.4-1~ppa1~buster.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

so i wonder if that's the problem. Any ideas?

You can add some more swap
Code:
root@nanopineo2:~# dd if=/dev/zero of=/swapfile.img bs=1M count=512
root@nanopineo2:~# mkswap /swapfile.img
root@nanopineo2:~# chmod 0600 /swapfile.img
root@nanopineo2:~# swapon /swapfile.img
 

mcb

Member
Joined
May 28, 2020
Messages
17
Likes
22
Partly inspired by this thread, I purchased a NanoPi NEO2 Black, installed DietPi, and enabled Roonbridge but the results were underwhelming. Streaming to the USB input of my Oppo BDP-105 I was getting pops and crackling distortion. This happened for both the NEO2 and NEO2 Black images. I tried various tweaks but the distortion remained.

After re-reading this thread, I found the solution by using @bzfrp's image. Thanks!
 

bzfrp

Member
Joined
Dec 21, 2017
Messages
19
Likes
17
Thank you for your feedback. Not using RoonBridge, I wasn't sure if it worked.
 

bzfrp

Member
Joined
Dec 21, 2017
Messages
19
Likes
17
LMS (Logitech-Media-Server) was my first audio server before switching to UPnP.
I'm switching back to LMS after trying the web UI "Material skin plugin".
LMS: https://forums.slimdevices.com/showthread.php?113511-Logitech-Media-Server-8-1-0-released!
Material skin plugin: https://github.com/CDrummond/lms-material

My NanoPi NEO2 is now a player (squeezelite) for LMS (NAS Odroid-HC1: https://www.hardkernel.com/shop/odroid-hc1-home-cloud-one ).
I would like to share with you a minimalist system that is loaded entirely into RAM. It contains kernel+busybox and squeezelite. I also installed dropbear (ssh login/passwd: root/root) and two programs for system logs, they are optional.
nanopi-neo2_system-into-ram_2020-12-22.png
Here is the link to the image: http://download.tuxfamily.org/bz31n....02.x_linux-5.4.83_usb-audio_into-ram.img.zip
 
Last edited:
Top Bottom