Skip to content
hooterjacksonPublic

About

A haptic knob for music, lights, windows and CAD. Windows app and firmware for the Nano_D++: Sonos volume, Apple Music on its round screen, Home Assistant lights, window switching and snapping, and app profiles for Onshape, Figma and more. Tested on one knob.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

87 Commits

Folders and files

Repository files navigation

Desk Dial. A haptic knob for music, lights, windows and CAD.

A round knob with a small screen: a turn raises the volume while an arc of light follows it, a press opens a list of album covers, a long press on the first button brings the Home screen back, and a small glass card on the PC follows every step

A Windows app and firmware for Karl Malota's Nano_D++. A motor makes every click, and each kind of control has its own feel.

Get started ›  ·  What you need  ·  Download

Built on Karl Malota's open Nano_D++ · Windows 10 and 11 · v2.0.0 · MIT

What you need

  • A Nano_D++ knob (Karl's hardware files), a Windows 10 or 11 PC and a USB-C cable that carries data. Putting Desk Dial's firmware on the knob takes about half an hour, once, and you can always go back.
  • Optional: Sonos, Apple Music and Home Assistant. Each one adds a chapter below; without any of them you still get the window picker, Onshape, the Navigator and the knob's own feel, sound and lights.
  • Apple Music browsing needs your own Apple Developer membership (99 USD a year) and an Apple Music subscription. Everything else is free.

Not today: macOS, Linux, Spotify, lights without Home Assistant, Firefox for Onshape and the other web apps, more than one knob.


Music

Every percent, a click. Sonos volume, 1 % per click, with a firm wall at each end.

Turning the knob raises the volume from 66 to 97 percent; the warm arc of light turns amber past 80 percent and red past 90 percent

Needs Sonos


Your library, on the knob. Recently Added and your playlists, with covers on the round screen.

Album covers slide across the round screen as the knob turns; button 3 swaps the list to playlists and back; the ring lights in each cover's colour

Needs Sonos and Apple Music (Apple Developer membership, 99 USD a year)


Full screen when you want it. Your albums and Up next on the monitor, without taking focus.

A full-screen music explorer over a frosted desktop: the knob browses rows of covers, switches to playlists, and Play grows the chosen card and closes the overlay

Needs Sonos and Apple Music  ·  Everything Music does ›


Lights

Dim, warm or set a scene. Brightness, warmth and scenes for your Home Assistant lights.

The Lights screen: turning the knob dims the room from 80 to 30 percent with a heavier click; a bar and a big number follow

Needs Home Assistant  ·  Everything Lights does ›


Windows

Every open window, one turn away. Live previews. Turn to choose, press to switch, or snap two side by side.

Live previews of open windows fan out across a 16:9 monitor; the knob turns through them, snaps one to the left and one to the right, then switches to a third

Works with nothing else set up  ·  Everything the picker does ›


Onshape

Zoom, orbit and pan in Onshape. Turn to zoom. Hold a button and turn to tilt, orbit or pan.

The knob shows a wireframe cube that turns with the shaft; holding a button and turning orbits the model; a long press on button 3 opens a ring of command cards

Tested in Chrome · turn it on in Settings › Apps  ·  Everything Onshape does ›

More apps

Figma, Plasticity, Blender and AutoCAD. Karl Malota's app profiles give each program its own knob.

Karl Malota's pixel-art app icons: Onshape, tested; Figma and Plasticity, not yet tested; Blender and AutoCAD, basic

Figma and Plasticity not yet tested · Blender and AutoCAD scroll only · each Off until you choose Manual or Auto in Settings › Apps  ·  Every app, and how to add one ›


The Navigator

Always know what each button does. A small glass card shows where you are and what the four buttons do.

Two Navigator cards: browsing Recently Added with the album Glass Weather, the four button words and the hold hints; then the song Copper Sun playing, with the volume at 62 percent and Home, Recent, Tracks and Pause on the buttons

More about the Navigator ›


Feel and sound

A different feel for each control. Soft for volume, coarse for windows, smooth for scrubbing.

The knob turning the volume up to the end, with two strips beside it that draw themselves as it goes: what you feel, an orange line of evenly spaced clicks, then the wall pushing back, then a flat line once the motor rests; and what you hear, a white mark for every tock and two heavier orange marks for the thuds at the wall

How the feel works ›


The ring

The ring shows what the knob is doing. Sixty LEDs show the volume, the album, and what just happened.

Six of the knob's LED rings, each playing one moment: the volume arc warming to amber and red, album colours in a list, a pink bloom for Like, a half-ring wash for Snap, a green flash as Play next lands, and a glow at the end stop

Every moment, and the screen's motion ›


Settings

Set the sound, the feel and the motion. Turn the sounds down, soften the haptics, calm the motion.

Desk Dial Settings, Knob page: LEDs Colour, a note pointing Onshape and other apps to Settings › Apps, Knob sounds On at 100 percent, Reduced haptics Off, with the status strip for the knob, Sonos, Apple Music and Home Assistant above

Every setting ›  ·  A day with Desk Dial, in eighteen seconds ›


The knob

Nano_D++ by Karl Malota: a round 240 × 240 screen, a ring of 60 LEDs, four backlit buttons, a brushless motor that makes the clicks and the walls, and a small speaker.


Thank you, Karl

Thank you, Karl. Desk Dial exists because Karl Malota (katbinaris) designed the Nano_D++ and open-sourced its firmware and hardware. Desk Dial's knob firmware builds directly on his: the motor control, haptics, display and LED foundations are his and his contributors' work. With his permission, it also adapts ideas and code from his newer feat/firmware-esp-idf-quadra branch: the Onshape app UI on the knob (the cube, the command cards and wheel, parameter mode, the plasma and the pixel font), the click and thump sound synthesis, and the haptic-effect ideas. Desk Dial is a separate hobby project and is not an official Nano_D product.

Small project, straight answers

  • Tested on one knob, mine, including a 9-hour session connected to Desk Dial. A few paths are not yet tested on real hardware, and the known limits name each one.
  • The app isn't signed, so Windows SmartScreen will warn you the first time (choose More info, then Run anyway). Smart App Control on Windows 11 can block it outright; see the FAQ.
  • There is no installer. Desk Dial is a folder you unzip, and nothing starts with Windows unless you set that up.

Quickstart

The knob in half an hour. Each service adds a few minutes on top.

  1. Flash the knob. Follow the flashing guide; it backs up Karl's firmware first. You should see the knob restart.
  2. Run the app. Unzip the latest release anywhere and open DeskDial.exe; at the SmartScreen warning choose More info, then Run anyway. You should see the Settings window, and Desk Dial's icon in the tray.
  3. Plug in the knob. You should see the tray icon read "Desk Dial · Knob connected" and the knob show Home, with four words along the bottom: Music · Win · Lights · Play (Play reads Pause while music plays).
  4. Connect what you use in Settings: Sonos · Apple Music · Home Assistant · Onshape. You should see the matching knob screen stop saying "Not connected" or "Sonos unavailable".
  5. Turn it. The speaker volume moves and you feel each click. Press 1 for Music; hold 1 to come back Home (in Onshape and the other apps, hold all four buttons for a second). You should see the screen name the four buttons on every screen, so there is nothing to memorise.

Keep the one-page cheat sheet (PDF) under the knob for the first week.

Your desk stays yours

  • Nothing leaves your PC except to the services you set up. No telemetry, no update check.
  • Your keys and tokens are encrypted for your Windows account and never written to logs.
  • Nothing is stored on the knob. Album covers live in memory only.

What is read, written and kept, file by file: privacy.

Update, uninstall, go back

  • Update: quit from the tray and unzip the new release over the old folder. Your settings stay.
  • Firmware: the flashing guide, same steps as the first time.
  • Uninstall: delete the folder and %LOCALAPPDATA%\DeskDial. Nothing was installed.
  • Go back to Karl's firmware: the flashing guide restores your backup; if the knob won't start, see recovery.

Something odd?

The tray says "Knob not found". Try another USB-C cable (some carry power only) and another port.

The tray says "Stock firmware · display/control extension required". The knob still runs Karl's firmware: flash Desk Dial's.

The knob says "Sonos unavailable". Check the speaker's address in Settings › Music, and that the PC and the speaker are on the same network.

Everything else: FAQ · troubleshooting · open an issue · Karl's Discord.

Built in the open

flowchart LR
  subgraph KNOB["Nano_D++ knob (ESP32-S3 firmware)"]
    LCD["Round 240 × 240 screen<br/>LVGL"]
    LEDS["60-light ring + button lights"]
    HAP["Haptic motor<br/>one feel per screen, sounds"]
  end
  subgraph PC["Desk Dial (Windows app)"]
    CTRL["Controller<br/>screens, buttons, holds"]
    OVL["Overlays<br/>Music explorer, Up next,<br/>window picker, Navigator"]
  end
  KNOB <-- "USB serial<br/>JSON lines, covers, icons ⇄<br/>turns, presses, holds" --> CTRL
  CTRL --- OVL
  CTRL -- "local network" --> SONOS["Sonos speakers"]
  CTRL -- "Apple Music API" --> AM["Apple Music library"]
  CTRL -- "WebSocket + REST" --> HA["Home Assistant"]
  CTRL -- "mouse, keys" --> ONS["Onshape in Chrome or Edge"]
  OVL -- "window previews, snapping" --> WIN["Windows desktop"]
Loading

The app does the thinking and the knob does the drawing: they talk over USB in a line-based JSON protocol, documented in firmware/CONTROL_CENTER.md. Build the firmware and the app yourself, or add an app with a profile (app/profiles/README.md); issues and pull requests are welcome, and for a big change please open an issue first, because the knob has only four buttons to share.

What's new in v2.0.0

Home Assistant lights and scenes, the Navigator, Onshape mode with Karl's knob UI, app profiles for Figma, Plasticity, Blender and AutoCAD, walls at every end, a silent motor at rest, screen motion and knob sounds. The knob firmware and the app now share one version number. Everything else is in the CHANGELOG.

Credits

  • Karl Malota (katbinaris) designed the Nano_D++ and wrote its firmware and hardware. With his permission Desk Dial adapts, from his feat/firmware-esp-idf-quadra branch, the Onshape app UI on the knob (cube, cards, wheel, parameter screen, plasma, Silkscreen pixel font, icons), the click and thump sound synthesis, and the haptic effect player with its table of feels. His firmware credits @runger (Richard Unger).
  • App icons: pixel art by Karl Malota (katbinaris), from his Nano_D app profiles.
  • Typefaces: Archivo, Montserrat and Silkscreen, under the SIL Open Font License.
  • Designed with Claude Design and built with Claude Code.
  • Apple, Apple Music and MusicKit are trademarks of Apple Inc.; Sonos is a trademark of Sonos, Inc.; Windows is a trademark of Microsoft; Home Assistant is a trademark of the Open Home Foundation; Onshape is a trademark of PTC. Figma, Plasticity, Blender and AutoCAD are trademarks of their respective owners. Desk Dial is not affiliated with any of them.
Libraries

Every image on this page is rendered from Desk Dial's own code and tools, with invented albums, rooms and windows; the torque curve is a model of the motor.

License

MIT. The knob firmware in firmware/ builds on the Nano_D++ firmware by Karl Malota, shared with his permission; see NOTICE.md.

About

A haptic knob for music, lights, windows and CAD. Windows app and firmware for the Nano_D++: Sonos volume, Apple Music on its round screen, Home Assistant lights, window switching and snapping, and app profiles for Onshape, Figma and more. Tested on one knob.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages