roPlug: A configurable scroll wheel prototype

It’s here!

The schematics have been finished kinda, The PCB has been made (see photos below), and the chassis has been 3D printed. Just note that this is an early prototype version of a scroll wheel expansion card (roPlug V0.0.1a), and requires a USB-C to USB-A adapter to work. Update: fixed the circuitry and now works without problems! :smiley:

What’s this?

RoPlug is an enthusiast-made, highly configurable expansion card that is powered by an ATMega32U4. This means that this card is essentially a configurable mini arduino fitted into the form of a framework expansion card! Although it’s possible to do arduino tasks, like blinking an LED, or buzzing a speaker, the main focus of this card would be it’s ability to run the QMK framework with a rotary encoder (aka rotating knob)!

As mentioned above, this is a prototype, and does not work as expected 100%; so as a result, I’m selling this with the cost of BOM materials at a loss. This now works 100% after the fix, but I’m still selling this at a loss, but I’m open to other options.

How do I get one?


  • Assembled PCB: $25 each +shipping
  • Assembled PCB with encoder soldered: $26 each +shipping
  • PCB only (no components): only 1 available : $20 +shipping


  • encoder: $2.5
    • Comes with 3D printed knob
    • Choice of soldering or no soldering to the board
    • Not selling individually
  • 3D Printed chassis: $4
    • Comes with a spare chassis per board purchased. eg: 1 board : 2 chassis, 2 boards : 4 chassis, and so on…
    • The size is double height: the same height as the TALL SNACK by @XenoCow
  • 3D chassis STL + blender file: $8
    • I only have black at the moment.
  • Pre-flash QMK config with your choice of keyboard function: $0 free
    • Default configuration is at Volume up / Volume down
    • A list of QMK functions can be found here
    • examples include: Cut/Paste; VolumeUp/VolumeDown; MoveCursorLeft/MoveCursorRight; and so on…

Order form:

The form will close once stock has been depleted, and I will send out a PayPal invoice afterwards.



How do I take the board out of the chassis?

To take the board out of the chassis, grab the framework torx screwdriver, and press down on the tab at the side of the chassis:

Then pull down the cover tab, and pull out the roPlug board

To put the board back into the chassis, just slide the board back into the chassis. Then slide the cover into place, making sure that the tabs snap into place.

How do I use it?

Setup QMK

Depending on your operating system, take a dive through this wonderfully written instruction on setting up QMK on your computer. The link should get you setup and ready to run QMK on roPlug; however, I recommend reading through other sections to get familiar with QMK.

Once you have set up your QMK environment on your computer, head over to the roPlug QMK configuration and download the files. Alternatively, you can download the zip file using this link here.

Prepare roPlug

To flash your custom configuration, take out the board from the chassis, and grab a paperclip or wire:

Then set roPlug to bootloader mode by plugging it into your computer, then connecting the square reset port to the round ground port diagonal:

Once roPlug is in bootloader mode, it will then wait for QMK to load and flash the custom key map created in the configuration. Once QMK finishes flashing roPlug, you can place the board back into the chassis, and start using it like a champ!

Links & resources


why do you need the usb A adapter? does it physically fit?
i noticed on the schematic you have two 22 ohm resistors on CC and VCONN- this is wrong, you should have one 5.1k resistor on CC. might explain it

The USB-A adapter fixes and works out the bad circuitry I made on the USB-C connection, and yeah, I goofed up with the 22ohm resistors.

Correct me if I’m wrong, should both resistors be changed to 5.1k like in the first screenshot, or should CC be connected to VBUS with the 5.1k resistor in the second screenshot?

I’m trying to wrap my head around this, but I think I might be further confusing myself.

edit: This blog and this reference both say to have pull down resistors on CC and VCONN… so I guess it’s just a case of swapping the resistors?

1 Like

5.1k pulldown on CC only- ya see:

the way usb C detects orientation is by detecting which pin has voltage on it. Rp and Rd form a voltage divider. you can see how if your sink is a receptacle, you need two resistors because the CC wire is actually used to detect if the cable is flipped or not.
but if there’s no cable- you can only have one resistor, for one voltage divider. if you had two the host wouldnt be able to tell the orientation.


It worked! Taking out the 22 resistor on VCONN and replacing the CC resistor with 5.1k now works without the USB-C to USB-A connector. Once I replace all the resistors on other boards, I’ll update the post, and post a demonstrational video of my expansion card in action.

1 Like

Here’s the video of one of the many things roPlug can do:

The cards in the video has one as move-mouse-cursor-up/down and move-mouse-cursor-left/right. Essentially enabling an etch-a-sketch-like mouse cursor for the framework laptop.

It is also possible to change it to scroll wheel up/down, left/right, copy/paste, undo/redo… and a lot more!


Got mine, working so far, pretty sweet.


@mrwm How’s this look? It’s not as thin as you need it to be (2.2mm not including wheel), but it is thinner than what’s in use now, right?

Edit: just noticed that it’s only 3 pulses per revolution. Not too great.

It looked promising to the point where I had the EVQ-VVD00203B noted down in the github README awhile back; however, I didn’t use it due to it’s low-resolution per pulse.

It would definitely be great if it had at least 6 pulses per revolution, like the current encoders that I’m currently using. Also, the encoder doesn’t fit the footprint that the mechanical keyboard community used, which meant people can’t easily source alternative parts that are compatible to this card.


One way I think you could do a quadrature encoder in a really thin space would be kind of like this thing from polulu- sot-23 hall sensors (they detect magnets) on one side of the pcb, 90 degrees apart, and a magnet wheel on the other side. The resolution depends on the number of magnets in the wheel, as shown by this guy quite nicely.



I don’t think it would be a viable alternative if it will only cause problems later on, but the idea is great though!

This looks really cool. Do you plan on making any more? If so I’d be interested in getting one

I still have 3 assembled PCB’s available. I’ll temporarily open up the google form for orders.

In stock:

  • 3 Assembled PCB’s
  • 2 rotary encoders
  • 1 PCB without parts

This means that 2 of the 3 assembled PCB’s will have the rotary encoders available.

1 Like

Ill take one if they are still avaliable

I opened the form again, but I only have 1 assembled board + rotary encoder left.

Form submitted

Form closed. Not going to do another run until I save up more money for another project like this.

I still need to wrap up a couple places like cleaning up my QMK github repo for this board, and updating the configs to the new QMK requirements, but I’ll get around to do a small write-up on this project. It’s been over three years since, so I need to dig those photos and old stats. Unfortunately, I might have some that slipped through the cracks.

This has been a fun, but expensive project that I did to learn about kicad, manufacturing, setting up QMK, and all the other fun stuff.

Hopefully I’ll get around to redo the board with the recommended board layout + more breakout pins for the chip on the board, but who knows? Maybe there’ll be more people interested.

Cheers and see you guys around the forum! :love_you_gesture:


The QMK configs for the roPlug can be found here:

I dont think it’s the prettiest, and I might have some of the configs wrong, but it works :smiley:

Also, the write-up for the project can be found here: