Elaborate? I have a single pi3 as a Plex server, looking for more ideas.
I think I'm going to try to integrate net-boot in Soundsync this weekend. It would be awesome to be able to install Soundsync on any computer on the network, turn on an option and then just start the rPi to get it to play music.
One is setup for RetroPie. One has LibreELEC installed, showing TV from my HDHomeRun. One has a GPS hat and is a local NTP server.
And one boots into an Amiga emulator because I'm very old and nostalgic.
"I'll just sling udp multicast of the PCM samples around the network, can't be that hard right?"
ended up using MPD with pulseaudio over TCP, and they get out of sync after a few minutes, but good enough
I have to give credit to Apple on this one, as they had the genius idea to make the buffer >1s, and send control messages independent of the audio stream.
There’s gotta be a way to do it with PTP and the same ideas but clearly it’s either an extremely difficult problem, too niche, or both.
I'm currently working on devices that synchronises themselves wirelessly indoor over a large area and I'm now wondering if music could be an application I haven't though about...
You need some way to compensate for clock drift between different playback devices. Even good clocks will drift 10ms in a few hours.
And yes, definitely. If you can build in a “chromecast receiver” so that a user could cast to multiple synced speakers (at full quality), you’d definitely have my attention
Turns out our brains are really good at compensating for relatively large offsets
And that distance, you're gonna hear some uncomfortable comb filtering. A third of a meter corresponds to a frequency of about 1khz, which is right smack dab in the middle of a critical band, so you WILL hear the constructive and destructive interference around ~1khz.
(and _5ms_? That means the speakers are now ~220 samples out of sync, so I'd expect any lows around 200hz to have some destructive interference, making the music sound hollow.)
1ms of sync is FAR less than adequate. It took effort, but I was able to get a distributed set of raspis to within about 5 samples at 44.1k, and I think I can do better.
Why do I know this or care? :) I've done (and still do) a lot of research (and inventions) in the field of microphone array processing and audio source localization -- tracking objects purely by their sound. With cheap commodity equipment I can generally get a resolution of 5cm, and with lots of fine tuning I was able to do sub-cm tracking.
If you sit on the left or right the sound should still come from "center stage" or (x,y,z)=(0,0,0) without being shifted or drift.
But yeah! I've done that. Kept audio streams to within a few samples of alignment for more than 24 hours. It was fun, and yes, somewhat hard. "will more than happily do it again for money". :)
To really do it right though I think it would be cool to tune everything somehow. So have a microphone + photodiode sensor you put in your chair, then run a test and have it synchronize all audio and video sources together. (maybe it could even be pointed to your bluetooth headset and do that delay too)
I think with that setup, you could not only get good synchronization, you could probably tune the delay to the minimal value (maybe you could still do stuff like something live)
0. https://en.wikipedia.org/wiki/Preboot_Execution_Environment
https://www.raspberrypi.org/documentation/hardware/raspberry...
Anyway, I find it funny that we are arguing about the proper name for network boot in a thread about usb boot.
I’ve already got isc-dhcpd running with PXE booting for x86 / AMD64 machines so might add some rules in for the Pis too.
Thanks for the heads up by the way. I hadn’t realised you could network boot Raspberry Pis.
(Also looking forward to researching this netboot solution you speak of)
Thanks for the link.
Not familiar with netbooting, but will be looking into it!
Thanks for the recommendation. I'll give volumio a closer look.
https://news.ycombinator.com/item?id=24441112
You may or may not get some latency with video. Seemed to vary for me.
I should have remembered this one, since I am particularly interested in it.
But, I have not actually tried it myself. I wish I had the immediate chops to contribute to the project.
1. MotionEye can help set your own local security camera setup.
2. PiHole with Unbound can help setup network wide ad blocking and DNS over TLS.
3. SDR (DVB-T dongle) with rtl_433 can receive 433Mhz communication from your sensors like Fire Alarm, Gas Sensor, Car key etc. and notify you.
4. MQTT server on a Pi can act as a local notification server, MQTT client on your phone can receive notifications.
Of course, the possibilities with a SBC are endless, but I included just those projects which I feel can be implemented without much effort but provides huge lifestyle/cost-benefit improvements.
As for android client, I recommend this[1] but it requires Tasker Autonotification plugin to display notifications.
[1]https://play.google.com/store/apps/details?id=in.dc297.mqttc...
I did bump into these docs:
https://www.raspberrypi.org/documentation/hardware/raspberry...
Are these the gist of it, or did you do a little more?
My DHCP server is pfSense, and I'm using a FreeNAS server as the TFTP/NFS server.
The Pi netboot procedure is documented in more general terms, here: https://www.raspberrypi.org/documentation/hardware/raspberry...
Why wouldn'y you? That's what I do: I use the DHCP server (dnsmasq) that comes with pi-hole, with a few additional config files, and it works pretty well. It even grants leases faster than my router was (which has been an issue for radv packets & DNS).
For what I'm doing which is software builds I was able to write a specific NBD driver[1] for this task which has quite large performance gains, although there are trade-offs that only make sense for temporary build directories. I don't believe this is possible with NFS at all, or at least not without far more effort.
[1] https://rwmj.wordpress.com/2020/03/21/new-nbdkit-remote-tmpf...
With NBD you're giving a filesystem driver exclusive access to a block device, the kernel knows the underlying isn't expected to change, so for example no round-trips are required to read or revalidate some cached data, and something like "find /" while slow to run the first time around, will likely be served from cache on a subsequent pass, and thus lightning fast
My worry would be saturating the older 100Mbit connections when downloading things like docker images.
There was a project that I read about a while ago: https://matthewbauer.us/blog/nixiosk.html
I don't use docker or any other kind of container system because it's so easy to just reboot a Pi into a new OS on demand. Everything runs natively.
Is that too slow? I feel like 30 seconds to fill up half the ram is a perfectly acceptable boot time.
I can imagine that if they've made the bootloader more robust on the pi4 that this is truly excellent now.
The arm ecosystem seems to be slowly moving to some form of UEFI+grub boot for all the linux/etc distributions and away from all these platform specific boot methods.
I started booting from USB SSD a couple of months ago since I got my Pi 8GB, intended to use it as my low power consumption workstation replacing the Optiplex SFF Running Manjaro + KDE Plasma. Turn out to be, Manjaro ARM + KDE Plasma on Pi 4 runs pretty well (even all KWin eye candies work as well as the Intel HD integrated GPU on the x86_64 variant). However, USB 3.0 to SATA III SSD is clearly a bottleneck still. I am yet to check if NFS over 1Gbps ethernet can be faster (anyway, my btrfs backed consumer grade NFS may not be production grade to support 10+ devices).
Or, assuming you are from a well functioning country, what would happen and how would you restart?
Wow. How?
The important bit is that it will look for its boot files in a subdirectory named the serial number of the Pi. Only if that fails will it look in the root.
So I have symlinks for the serial numbers of all my Pis that point to whatever OS I want to boot.
There's no protection against the network administrators though.
The required DHCP responses come from my router running pfSense, which is some kind of cheap Supermicro thing.