$50 DIY ESP32-S3 Knob as Roon Desk Controller

512k internal and another 8MB of (much slower) PSRAM

PSRAM is plenty fast for most things. Just sayin…

I did a research prompt in a few models, and they converge on this: roon-knob/docs/decision_records/002-bridge-architecture-rationale.md at explore/bridgeless-feasibility · muness/roon-knob · GitHub I haven’t validated it, fwiw, but any of the 3 make me abort for now. :wink: I think some ESP chips can run micropython, and that might be worth a try.

While I agree adoption could be much higher for folks not tech-inclined, I don’t see that as a direct fit for my aims for this project. If there was a market for a $200 device, I’d look into a Pi Zero-based controller, which I think I could pull off.

1 Like

Hi @Muness,

I would highly recommend getting your Docker extension available from @Jan_Koudijs Extension Manager, allowing easy deployment for less tech savvy users as well as easy upgrade management.

1 Like

Good idea! And I’ll be able to move my instance to my rooExtend pi too. :slight_smile:

1 Like

1.4.1 released. This one is all about battery optimization. There are now options to reduce battery usage when the display is sleeping:

  • WiFi Modem Sleep: Power down radio between polls
  • CPU Frequency Scaling: Reduce CPU speed 240→80MHz
  • Extended Sleep Polling: Longer poll interval when zone is stopped (configurable, default 60s)

All features are disabled by default until proven stable. Please let me know if you have issues when you enable them.

I have a 380mAh battery in mine (while I wait for the 102035 3.7V 1000mAh from AliExpress) so it has atrocious battery life.

Submitted: Add Roon Knob extension to Remote Control category by muness ¡ Pull Request #23 ¡ TheAppgineer/roon-extension-repository ¡ GitHub

I see some very old PRs with no comments, so not sure if that’s enough or if I need to do something else.

1 Like

Thanks for exploring this. That analysis was a good read. It would sure be nice to just deploy a knob but that doesn’t seem to be in the cards.

1 Like

Might also be worth a chat with Harry about RoPieee.

1 Like

Just a feedback regarding rotation: after rotating the device, the swipe-up gesture to access Art Mode doesn’t adapt to the new orientation and instead becomes a swipe-down gesture. Nothing I can’t work around, just a minor inconsistency I noticed.

Regarding Always On mode: Ropieee turns off the display when the current zone isn’t playing anything. That behavior might be a worthwhile addition to the Always On option. That said, powering the device off entirely is of course another possible solution.

By the way, I set up a hotspot and reverse proxy on my work laptop so I can use the knob at the office via vpn. Never thought I’d say this, but I’m actually a little hyped to get back to work after the winter vacation to try the knob there :see_no_evil_monkey:

1 Like

Great catch! I’ll create a github issue and pick it up, probably over the holidays.

Ah! That would make sense as a positive signal that nothing is playing.

Love it!! Can you share a bit about your setup? You use laptop + DAC over VPN as a Roon playback node?

1 Like

How so? Including the bridge in that distro as an option?

@Muness,
I was able to get it up-and-running. Thank you so much for this nice control.
I installed the Docker on a Raspberry Pi. I noticed one problem in the procedure for the Rapsberry Pi implementation as Docker on RaspiOS Lite. I was namely not able to do the command “sudo usermod -aG docker $USER” after I installed docker. After a long time of searching, I discovered I first have to do “sudo raspi-conf” – “ 1 System Config” – “S1 Wireless LAN (Enter SSID and passphrase)”, and select my country. Even if I was not connecting the Raspberry Pi to my WiFi, the country has to be filled in, otherwise the command “sudo” is not accepted. This is just an info, as this has nothing to do with Docker or your app.
Kind regards, Frank.

@Muness,
I have a question of the display of the “Waveshare ESP32-S3 Knob”.
There are two circles on the display, the outer ticker circle is clearly the volume. But what is the function of the inner thinner circle? This Is not clear to me. I thought it was the progression of the song, but that doesn’t seem to be the case.

And than a request. The volume is indicated in dB. But my amp is using simply a number from 0 (silence) to 96 (which is 0dB). It is very strange that, when I am increasing the volume, I see the amount of dB increasing. Is it possible to simply remove the indication “dB”, and just present the quantity? Ex. “40” instead of “40dB”. This could be a configurable setting of course.

And than a next request/improvement. On my network mDNS seems not to work. So I have to put it manually. But that is something which is not that easy, especially when you have already set the IP-address of the Docker in the Waveshare ESP-32-S3 Knob. Isn’t it possible to add it into the settings of the knob, so that it is easier to check and/or modify the IP-address of the Docker?

Kind regards and thank you for the hard work, Frank.

1 Like

It is supposed to be track progress, yes! I will investigate to see why it’s not updating.

I thought Roon supports both % and dB. Will see what the API reports and see if an option makes sense.

Did you get the "Update Bridge at:… " message on the knob when it failed to reach it? Or was that still unclear?

Also: Ideas as how to make it a setting? gTunes had suggested (in DM) assuming the same subnet (the first 3 octets) and a way to set the IP. That seem reasonable?

I am trying to do this first time setup simply without adding too many options that will likely only ever be used once.

At work, I connect my smartphone to my home network via VPN and listen to music through my Sennheiser bluetooth earbuds. At the same time, I connect my work laptop to my home network over VPN as well and use the Roon desktop app to browse my library and manage the playback queue.

To integrate the knob into this setup, I host a hotspot for it at my work laptop. For now, I didn’t want to spend too much time tinkering with routing, so I simply run a reverse proxy on my work laptop that forwards the bridge into the knob’s hotspot network. This way, I don’t have to expose much of my home network to the outside world, which makes me feel a bit more comfortable.

Seems perfect to me.

I understand that. No problem. But if mDNS is not working, than first time users will hva it much harder to implement it.

1 Like

I was fighting to get everything up-and-running, so at that moment I didn’t have a clue how to read messages. Sorry for that.

1 Like