Is Machine Learning In The Cloud Better Than A Local LLM?

| Comments

The title of this blog is bordering on nonsense. You need at least a few qualifiers to determine if one thing is better than another. If you can’t let your information leak outside of your organization, then using a large language model (LLM) in the cloud isn’t even an option for you.

This blog post isn’t about you, and it isn’t going to be an attempt to be provide recommendations that apply to you no matter your situation. This is going to be about my experience, my choices, and what has been working for me. I will also touch on where I think the future is going for my use cases.

Flux Man and a Robot

What am I using LLMs for?!

I don’t want to get too far ahead of myself, but I think it is safe to say that I am using LLMs for more and more small tasks. During most of my time using local and remote LLMs, I was usually smarter and more efficient than the artificial brains.

If I wanted to find the coordinates of a point on an existing line in OpenSCAD, I would punch in a few searches into Google, then craft my own function using the information I found. Today I can tell DeepSeek R1 to write me a function, and it will probably give me exactly what I want in under a minute.

My biggest use case for LLMs is still writing conclusion sections for blog posts. I never use the text verbatim, but the robots include phrases that I would never write on my own. They will include sentences that brag a little too much, or have a call to action that feels more enthusiastic than I would ever write.

I might let a third of those ridiculous sentences through now with minor edits. It feels like I have a colleague talking up my work for me. There is someone to blame for these words that isn’t me!

Local LLMs are getting smarter, but massive LLMs are outpacing them

I was using Gemma 2 9B to help me write blog posts for a long time. It was the first local model that I could ask for a conclusion section for a blog post, and it would give me back words that didn’t sound entirely unlike something I would write.

I would occasionally pass the same queries thought one of OpenAI’s mini models, and I wouldn’t say that OpenAI’s models were doing a significantly better job than my local 9B LLM. Those mini models may be significantly larger than my local LLM, but they weren’t giving me results that were significantly better for my purposes.

Screenshot from our Discord server

DeepSeek R1 excels at writing conclusions for blog posts. It ties together concepts that are a dozen paragraphs apart. It picks up on all sorts of details that smaller models miss. It doesn’t always draw the best conclusions, and it doesn’t always highlight things that actually matter.

Sometimes it calls out things that I wouldn’t have thought to, and those things actually work out. Sometimes I just drop whole paragraphs and put my own words in. Sometimes I ask DeepSeek to remove the bits I don’t like and try again.

I will not have the RAM or VRAM to run anything close to DeepSeek R1 locally for a long time. Even if I did, my local hardware would be an order of magnitude slower than the 80 tokens per second I usually see via OpenRouter.ai.

I deleted all my local models

I pretty much had to put a few dollars in my OpenRouter.ai account when DeepSeek R1 dropped. Once that happened, I had access to a plethora of fast, inexpensive models to choose from.

They have free yet slow providers for full DeepSeek R1 and Gemma 2 9B. At the time I am writing this, OpenRouter.ai’s free DeepSeek R1 is reasonable at around 20 tokens per second, but the latency is more than 15 seconds. You can pay a dollar or two per million tokens to reduce that latency to less than two seconds, and you can pay $7 per million tokens to also double or triple your token throughput.

Flux Image of Man Deleting Files

This guy is supposed to be deleting files. I’m not sure that he is!

Either price is effectively free at my volume, and the most expensive options for DeepSeek R1 through OpenRouter.ai are still a fraction of the price of OpenAI’s reasoning model.

Gemma 2 9B, the same model I was running locally, is currently 8 cents per million tokens at 80 tokens per second with less than half a second of latency. That may as well be free, and it is six to eight times faster than running Gemma 2 9B on my $300 Radeon 6700 XT GPU. It also comes with a much larger context window.

I put $10 into my OpenRouter.ai account three weeks ago. I have only managed to spend 8.4 cents so far.

Why work hard to run a slow local model when a remote model costs less than the change in my couch cushions?

I am still excited about local models!

I tested some very small 0.5B and 1.5B models on one of my Intel N100 mini PCs. I am amazed at how good the latest small models are. They don’t hog much RAM, and I was impressed by how quickly they ran on such an underpowered mobile processor.

Oobabooga’s web UI uses a really slow text-to-speech engine, and each step in the process waits for the previous step to complete, so you have to wait for the LLM to output an entire response before it even begins converting the response to audio. If you could swap out that text-to-speech engine with something simpler, then you could easily converse with an LLM on my $140 N100 mini PC at least as quickly as you could with a Google Home Mini or Alexa device.

Flux image

Small models keep getting better. Cheap mini PCs keep getting faster. The software that runs your LLMs keeps getting small performance boosts. I have extreme confidence that I will have a useful local LLM running on a cheap mini PC that responds to voice commands within the next year or two.

She won’t be fast enough to read a 2,500-word blog post in a reasonable amount of time, and she won’t be smart enough to write me a good conclusion section. That will still be a job for the big guns in a remote datacenter.

She will be smart enough to instantly tell me about the weather, if I have any appointments, and the title of the next book in the series that I am currently reading.

Maybe she will be able to handle 99% of my queries while being smart enough to know where to route the remaining 1%.

My feelings on cost have changed over time

I have always understood on an intellectual level that OpenAI’s API is so cheap at my volume that it may as well be free. I know how to do basic arithmetic, but that just didn’t matter. My gut still felt better about running random things through a local LLM.

Watching pennies slowly drain from my OpenAI, Fal.ai, Runware.ai, and OpenRouter.ai accounts has helped me feel just how ridiculously cheap the cloud API services are.

OpenRouter.ai activity

Be sure not to add too much cash to your OpenAI or OpenRouter.ai account. I only used twenty or thirty cents of the $6 I loaded into my OpenAI API account at the end of 2023, and those credits expired after 12 months. OpenRouter.ai says that they MAY expire credits after 12 months as well, so I am assuming any credits I don’t use there will disappear in a year.

I only lost $6 to OpenAI, and I am only risking $10 with OpenRouter.ai. That’s not a big deal. I don’t want you to get excited, load $500 into your account, and see you lose $498 in unused credits next year!

Don’t be scared away by the API!

You don’t have to use the API with any of the four service providers that I mentioned above. They all have playgrounds where you can set up separate chats or generate all the images you want.

The APIs are there. You can use them if you want. You can easily tie any of the fancy text editors into OpenAI or OpenRouter.ai. You don’t have to, but you definitely can!

DeepSeek R1 does impressive things that I haven’t seen before

I came back to write this section after I had DeepSeek right the first pass at the conclusion section for this blog post. Wait until you see what it did! I am not saying that the LLM is a mind with an actual understanding of anything, but it acted like it know I was talking about it in this blog post, and it called attention to that. It even bragged about itself at the end.

I also had DeepSeek R1 and DeepSeek R1 Distilled Llama 70B write a script for a YouTube video for me. I fed them both three entire blog posts about my Li’l Magnum! 3D-printed mouse project. Both models did a good job writing scripts. They don’t feel like anything I would ever say out loud with my own voice, but they’re both interesting starting points, and they very much feel like high-energy YouTube videos.

What impressed me is that DeepSeek R1 drew a conclusion about my Li’l Magnum! mouse that I hadn’t even managed to realize on my own. My Li’l Magnum! mouse weighs 20.63 grams, and DeepSeek R1 mentioned in the video that the mouse weighs less than a AA battery. It is absolutely correct. The AA Eneloop that powers my heavy Logitech G305 weighs 28 grams.

That is a delightful piece of information, and it is an amazing way of explaining just how light my mouse is. I didn’t manage to come up with that on my own.

In my experience up until now, an LLM will usually draw an incorrect conclusions if it even manages to come to a conclusion like this at all. I’m not saying this is revolutionary, but it feels like a big step forward!

Conclusion: Embracing the Best of Both Worlds

My journey with LLMs has been a dance between the convenience of cloud-based power and the promise of local potential. While DeepSeek R1 and OpenRouter.ai handle the heavy lifting today—crafting conclusions, solving code snippets, and saving me pennies on the dollar—I’m still rooting for the underdogs. Local models may no longer be helping me write my blog conclusions, but their progress hints at a future where even my $140 mini PC could become a snarky, weather-reporting, appointment-remembering sidekick.

The beauty of this era? You don’t have to choose. Cloud APIs offer absurdly affordable and fast brainpower for the tasks that matter, while local models inch closer to everyday usefulness.

Join the conversation! Whether you’re a cloud convert, a local-model loyalist, or just curious about where these “robot colleagues” might take us, hop into our Discord community. Share your own LLM experiments, gripe about latency, or brainstorm ways to make your local hardware useful again. Let’s geek out about the future—and blame the AI for any overly enthusiastic calls to action.

Crafted with a little help from my AI colleagues, who still can’t resist a good brag. 🚀

NOTE: Yes. Really. I did modify the words that came out of the LLM, but DeepSeek R1 added that brag on its own completely on its own!

Tips For 3D Printing Your Own Li’l Magnum! Fingertip Mouse

| Comments

This won’t just be advice on how to successfully print a solid Li’l Magnum! mouse mod that feels right. I will also talk about things you will need to go along with your Li’l Magnum! like PTFE skates and grip tape.

There is a good chance that you can download one of my models, load up some filament, use the default settings, and have yourself a usable mouse. Your mouse will probably be two grams heavier than the one on my desk, and it might feel a little stiff.

The Li’l Magnum! is tuned for PLA filament

PLA isn’t optimal, and it wasn’t my first choice. It is what I started prototyping with, and I quickly learned that PLA is more than up to the task. I tested one of my Li’l Magnum! prints in PLA to over 1,000,000 clicks, and it felt brand new after testing.

I ran off a test print in ABS, and it came in at 2.6 grams. That is 0.6 grams lighter than my PLA mice! Unfortunately, the ABS mouse was fragile along the layer lines, and the side grips felt spongy. My PETG test mouse wasn’t quite as light, but it had similar rigidity problems.

Li'l Magnum! in the slicer

As you can see, the vertical arms of the paddles are printed completely hollow with a single wall, but there is a cutout in back to force the front and rear walls to touch and melt together.

These problems are fixable. We could dial the grips and button paddles up to two perimeters. We could make the front springs wider. The bummer is that these changes would chew up most of the 0.6 grams of weight savings.

Everyone who owns a 3D printer can print PLA, and they can probably even print PLA very well. Maybe we could save 0.3 grams by tweaking the design and switching to ASA, but then fewer people would be able to easily print their own Li’l Magnum!.

Layer height matters!

All my test prints have been run using a modified copy of Bambu’s default 0.16-mm layer profile. That means the first layer is 0.2 mm, and every layer after that is 0.16 mm. Why is this important?

The tolerances that allow the clicks to feel good are pretty tight. One extra layer, and the buttons don’t like to release. One layer too few, and the clickers have a ton of pretravel.

I dialed everything in using the same print profile. If you use either a 0.1-mm or 0.2-mm profile, then some of your layers will be rounded differently than mine. That means your button engagement might be off by 0.06 mm. Maybe it doesn’t matter. Maybe it feels horrible.

Iterating on fingertip mouse weight

Iterating on the front end of the Li’l Magnum! to reduce the weight by 0.25 grams without losing any rigidity in the button feel

This may be particularly important if you are printing a Li’l Magnum! for your VXE R1 SE. The lens holder has to be just right. One layer too high, and it is way too tight. One layer too low, and the lens flops around.

Getting other settings wrong will just give you a slightly heavier mouse. Getting the layer height wrong might result in a mouse that just doesn’t feel right.

I learned when I was trying to dial in the height of the lens for the VXE R1 SE that my math in OpenSCAD is susceptible to rounding problems. I want to correct that, but for now I am just excited that we have a working 21-gram fingertip mouse that people can use.

What print settings should I tweak for the best possible Li’l Magnum!?

Uploading a 3MF to MakerWorld is on my to-do list, but it isn’t at the top. I thought it was better to write these words first because there are a lot more details to talk about than the print settings. Even if people were relying on the print settings I upload to MakerWorld, that wouldn’t be much help to people who don’t own Bambu Lab printers, and this should be documented anyway.

First of all, the Li’L Magnum! is meant to be printed with a single perimeter using PLA. That is what I tested. The click feel relies on the springiness of those long arms running up the front of the mouse, and I dialed in the width, thickness, and shape of those arms to feel right with one perimeter and zero infill.

Scout says mouse is heavy

I have lowered both the top and bottom shell count in Orca Slicer to 3. I also set the top and bottom shell thickness to 0. Orca Slicer will use the larger of the two values, and we want the larger value to be 3.

I have been using lightning infill. The percentage doesn’t matter, but it is important to set your minimum sparse infill threshold to something very low. I have mine set to 1. If you don’t do this, the slicer will make the button arms solid. That is heavy, and they will be quite stiff!

NOTE: I am working on an update to the Li’l Magnum! that eliminates some of the chunkiest parts of the front end. Those are the parts that need the lightning infill. I have been printing those test parts successfully with zero infill.

You need to have tree supports enabled. I DO NOT disable supports for bridges. Most of the bridges print fine without supports, but I wind up with misshapen button plungers every time I disable supports on bridges. Orca Slicer winds up treating the button plungers as bridges, so they don’t come out flat enough on the bottom.

We could probably use a support enforcer to fix that, but I am sticking with the lazy fix for now. I don’t want to have to worry about adjusting the location of support enforcers every time I make tweaks to my OpenSCAD source code!

Smooth or textured PEI

I have been using Bambu Lab’s textured sheet on my Bambu A1 Mini. My brain says that a smooth finish would be better for the undercarriage of a mouse, and I have been tempted to use one of my prismatic rainbow build plates.

I don’t know how much it actually helps, but it has been really easy to remove the 6-mm PTFE skates from my textured mice. The skates are cheap, but I have printed and used more than 50 prototypes. I would have run out of skates quickly if I couldn’t move them from one mouse to the next.

If you plan on iterating the fit of your Li’l Magnum! using the customizer, then it might not be a bad idea to stick with a textured bottom surface like I have been using.

What should I check after a print?

First of all, be careful removing your supports. I have gotten the hang of it, and I can do it rather quickly without damaging anything now. Be especially careful because the trees supporting the front bracing bar will probably be connected to the trees holding up the buttons and the button plungers. Separating those from each other with cutters makes things go a lot easier.

The only thing you have to watch out for is the bottom of the plungers. They need to be quite flat to engage smoothly with the buttons. Every now and then I have to trim a booger off the back of a plunger, and I have had to hit one with a file on two or three prototypes.

Side view of the Li'l Magnum!

It doesn’t take much of a PLA booger on the plungers to mess up the engagement with the microswitch!

It is a good idea to do some test clicks to make sure everything feels right before you actually screw the PCB in place.

I haven’t had a loose button in a long time, but I only have one of each PCB to test here. Your PCB or microswitches could be slightly different than mine. The plungers should be touching the microswitches. You can use one or two layers of electrical tape as shims to bring the switch closer to the plunger.

There is a tiny support pillar under each switch. You should put a tiny square of tape on the PCB directly above that pillar. It doesn’t have to be electrical tape.

The lens holder

The thin strips of plastic holding the lens up are thin for a reason. They are meant to put upward pressure on the lens, so they should flex slightly. That is why most of the lens holder starts a few layers higher than the build plate.

This was challenging to dial in well, and it is the reason my test print in purple silk PLA didn’t go well.

The lens holder will be slightly bowed out. Mine measure about 0.2 mm off from being flat. Your PTFE skates will have no trouble keeping that bowed section up off the mousepad.

You will need four 6-mm PTFE skates

I don’t think you need premium skates. The heavier your mouse, the bigger the difference your skates and mousepad will make. At 21 grams, I suspect that it would be difficult to tell the difference between cheap and premium skates.

I picked out a pack of 120 PTFE skates. I figured I would need plenty of extra skates, and they happened to be 30% off the day I was ordering. There are smaller packs of what look like identical skates on Amazon for around $5. There are also options that look a little more premium for a few bucks more.

I really don’t think it matters what you buy. A slipper skate on a 100-gram mouse makes a huge difference. A Li’l Magnum! doesn’t have much inertia to overcome.

I put one skate on each of the rear standoffs, and one skate under the front of each button.

Do you need grip tape?

I plan to expand this section in the future. I have ordered a couple of sheets of grip tape from Aliexpress. I am hoping to find something comparable to the VXE R1 Pro’s grip tape that I can cut with a laser cutter or the drag knife on the CNC machine. I think it would be neat if I can precut tape to exactly the right size and shape!

The grip tape that ships with the VXE R1 Pro is fantastic. It is slightly puffy and soft, and it has a weird and tacky feel to it.

I have used my Li’l Magnum! without grip tape, and I have used it with grip tape everywhere my fingers touch. I like it either way, but I have gone back to running mine without any grip tape.

The only place where I appreciate grip tape at all is the thumb grip. It is nice to have a little padding there to keep the corner from digging into my thumb, but it hasn’t been digging into my thumb lately. I think my muscle memory has finally started to understand that I don’t have to hold on to the Li’l Magnum! very hard at all. At any rate, this problem could be solved with a slight tweak to the model!

The buttons get a bit of texture from the layer lines, so they don’t really need extra grip.

I don’t think you need grip tape at all, but it is definitely going to be up to your personal preference.

Conclusion

The Li’l Magnum! is a demonstration of balancing gaming performance with accessibility to the maker community. By tuning the design for PLA and customizing slicer profiles, we’ve created a durable, extremely lightweight mouse that anyone with a 3D printer can bring to life. From dialing in layer heights to optimizing perimeters and infill, every tweak serves a purpose: ensuring crisp clicks, minimizing weight, and preserving that necessary amount of springiness.

The Li’l Magnum! project thrives on collaboration. Every test print, adjustment, and shared tip brings us closer to refining what’s possible with desktop manufacturing.

Ready to dive deeper? Whether you’re troubleshooting a print, sharing your mods, or geeking out over filament choices, our Discord community is the place to be. Swap stories, get real-time advice, and help shape the future of the Li’l Magnum!. Together, we’re building more than a mouse—we’re crafting a toolkit of knowledge for lightweight, open-source mouse hardware.

Let’s keep iterating, sharing, and clicking—one lightweight masterpiece at a time.

The L’iL Magnum! Fingertip Mouse Is Now Customizable on MakerWorld!

| Comments

I said I wasn’t going to write another mouse blog right away. It is the only topic I have written about so far this year. I definitely feel like I should sneak something else in, but I can’t do it! I haven’t been working on many other projects, and I am just way too excited about this new development.

Li'l Magnum! in the MakerWorld Customizer

The Li’l Magnum! in the MakerWorld Customizer

I knew I would eventually get the OpenSCAD source code for the Li’l Magnum! cleaned up. I knew I would eventually publish it somewhere. I also knew that I would eventually have things set up in a such a way that you could customize the feel of your 21-gram Li’l Magnum! fingertip mouse using MakerWorld customizer.

I had no idea that day would come so soon.

Everything between your hand and the mouse can be customized

You could definitely dig in to the OpenSCAD code and modify the Li’l Magnum! to work with the printed circuit boards (PCB) from other mice. If your mouse has the buttons and sensor on a single PCB, then it should be pretty easy to make the necessary tweaks to make your mouse fit. Those settings are hidden outside of the scope of the OpenSCAD customizer.

These are the things you can easily tweak:

  • Height of either mouse button
  • Length of either mouse button
  • Width of either mouse button
  • Angle of either mouse button
  • Position of the front and rear of the thumb and finger rests
  • Height of either finger rest
  • Angle of either finger rest

I set the location of my buttons up fairly high, because I didn’t like my index finger rubbing against the cold metal of the wheel’s encoder. I definitely liked the feel of the buttons when I tried setting them lower and flatter, and maybe you don’t give a hoot about touching the encoder. You can drop the buttons down so they are barely above the switches.

Our middle fingers are longer than our index fingers, so I like having the right button a little lower than the left button. It helps my middle finger land closer to the sweet spot of the button. Do you want your right button even lower? Go for it!

You can set the position of the front and rear of each side grip independently. Maybe you want the back of the thumb grip to sit higher up and farther out. Maybe your fingers land in a different spot. You can set things up however you think is best.

How many mice will I have to print to get things just right?!

Each Li’l Magnum! that I print weighs in at 3.2 grams when printed in PLA, and each mouse uses up roughly its own weight in support material. Printing a few test mice to get things dialed in isn’t all that wasteful.

I tried several angles for the grips: wider in the back, both set up to rotate the entire mouse a few degrees, with angles only on one side. Everything felt weird to me, so I wound up going back to the simple, straight sides.

Li'l Magnum! grip differences

Left: Longboy Li’l Magnum! encourages a grip like a normal mouse. Right: Original fingertip Li’l Magnum! gives you a much righter grip and allows for more control with your fingers.

There are a few tricks you can use to help dial things in. The most important part for me was getting the lengths of the grips right, and getting them both set in the proper position. You could always make the grips bigger than they need to be, but I wanted to shave off as much weight as I could!

You can put your fingers on the two buttons, then rest your thumb and remaining fingers where they are comfortable. You can measure by just how far your fingers miss the grips, and that will give you a good starting point for your first customized Li’l Magnum! print.

When I was testing out angles, I wound up putting blobs of blue poster tack on each grip. That let me shape things to get an idea what angles I might want to set in OpenSCAD.

I suspect customization has tremendous value

I already mentioned this in the last blog post, but I think it is worth repeating. I saw a short review of the Zeromouse on Reddit, and one of the things it mentioned was how using the Zeromouse feels like you’re wearing Optimum’s glove. It works well enough, but it is obviously meant for someone else’s hand.

If you use my Li’l Magnum!, then you might feel like you are wearing my glove. Maybe it fits well enough, but there is a good chance that it needs some tweaks. You might like a wider mouse. You might like to stretch your fingers a little farther to reach the buttons.

You might not want to make big changes, but shifting things around by two or three millimeters may be the difference between a mouse that feels OK and a mouse that feels perfect.

Infinite customization is cool, but I don’t expect it to be necessary for everyone

I think the customizer is extremely important today, because the only other options are either for you to wear my glove or someone else’s glove. I don’t have small hands, but I also don’t think I’ve made a large mouse. The Zeromouse Blade is way longer than my Li’l Magnum!, and I don’t understand how I would even grip the Zeromouse. The Zeromouse side grips extend back more than a full inch farther than the Li’l Magnum!’s grips!

That last sentence is enough for me to know for sure that my Li’l Magnum! won’t be right for everyone. It is definitely wrong if you use a mouse with your left hand, and that would be super easy to fix.

I am willing to bet that we will learns that three or four grip layouts would be enough to make almost everyone happy. Double that when we flip them for the lefties!

Li'l Magnum! next to the longboy Li'l Magnum!

The Li’l Magnum! next to the longboy Li’l Magnum!

I have a quick test Li’l Magnum! here with lowered buttons and grips that extend back in approximately the same way as the Zeromouse Blade. The way I have to hold this alternative mouse makes it feel like an entirely different mouse, but I took it almost immediately, and I was playing Team Fortress 2 just as well as I always do.

The longer mouse restricts my movements a lot more than the fingertip grip of the original Li’L Magnum!, so I don’t think I will be switching. I do think I need to hammer out a comfortable layout of this style.

I won’t know how to set up other comfortable configurations without your help. I hope that you will share your settings with us when you dial in your Li’l Magnum!, and maybe show us some photos of your grip. That will help me find some base configurations to help others get started, and it would be nice to have some options in my Tindie store.

What’s next for the Li’l Magnum!?

I think I should dial in the non-fingertip version of the Li’l Magnum!. Like with most parametric models, the decisions I made for the connectors on the grips start making a lot less sense when you push them too far back. That is easy enough to fix, and I can definitely squeeze in a bracing bar across the top on the long mouse.

I also just ordered a VXE Mad R mouse. I think this will be the mouse to buy to build a premium Li’l Magnum!. The Mad R is 13 grams lighter than my VXE R1 Pro out of the box, and the Mad R comes with an 8K USB dongle. The best part is that it only cost me $42 shipped. That is less than I paid for my 1K VXE R1 Pro. Both mice use the same sensor, but the Mad R ships with a lighter 200 mAh battery.

NOTE: Maybe I should have ordered the VXE Mad R Major for an extra $20. It has an even newer sensor and also supports 8K polling while plugged in.

Keep in mind that I am saying this before having a working Li’l Magnum! STL file for the Mad R!

Li'l Magnum! in silk purple PLA

Don’t print your Li’l Magnum! in silk PLA. This one was 0.15 grams lighter, but the lens holder is too rigid and the layer lines are too brittle. I snapped one of the standoffs while screwing in the PCB!

I think the VXE R1 SE for $19 is an amazing mouse to use to build your Li’l Magnum!. It will be light. It will feel great. I can’t imagine finding a better FPS gaming mouse for the price.

It is certainly looking like the next step up should be the VXE Mad R. You get that 8K dongle for free, and you get lighter guts. I know that running a mouse at 8,000 Hz drains the battery fast, but the 8K dongle also allows for 1,000, 2,000, and 4,000 Hz. It is nice to have options!

I am confident that I will have the VXE Mad R hardware installed in a Li’l Magnum! the day that it arrives, and it is due to arrive here in ten days or so.

Conclusion: Your Perfect Grip Awaits – Let’s Build It Together

This milestone—releasing the fully customizable Li’l Magnum!—isn’t just about sharing a design. It’s about inviting you to shape it into your ideal mouse. The beauty of MakerWorld’s customizer is that it turns what was once a hypothetical “someday” into a tangible today. No more settling for a glove that don’t quite fit you hand. With adjustments as granular as a millimeter or a degree, you’re no longer wearing my glove—you’re tailoring it to your fingertips.

The Li’l Magnum! is more than a mouse; it’s a starting point. Maybe you’ll tweak the button heights to dodge the encoder wheel’s chill. Maybe you’ll angle the grips to mirror your palm’s natural arc. Or maybe you’ll flip the design entirely and forge the Li’l Southpaw! for left-handed gamers. Whatever your vision, I want to see it—and so does our community!

Join our Discord community and share your customizations, grip photos, or even your frustrations. Did lowering the buttons by 2mm transform your aim? Did changing the angle of the thumb grip help steady your shots? Tell us how thing are working for you!

Li’l Magnum! 22-Gram 3D-Printed Fingertip Mouse Mod For The VXE Dragonfly R1 and R1 SE

| Comments

I am excited. A more affordable $22 VXE Dragonfly R1 SE Plus arrived at my door two hours ago. I disassembled it immediately and started test fitting it into one of my spare Li’l Magnum! shells for my Dragonfly R1 Pro. It was close to a good fit! The screw holes don’t quite line up, but they were close, and I had to add a holster for the R1 SE’s lens.

Li'l Magnum VXE Dragonfly R1 SE+

It only took four targeted test prints to get the screw holes lined up and the lens at the correct offset and height for the mouse to actually work. I was assembling a working ultralight fingertip mouse less than forty minutes later!

What is the difference between the R1, R1 SE, and R1 Pro?

There is a table in the ATK store showing the differences in specifications, but here are the important things that I know that matter when you’re building an ultralight fingertip mouse.

If your VXE Dragonfly R1 has “Max” or “Plus” in the name, then it has the heavier 520 mAh battery. That is double the battery capacity of the other mice, and it adds 4.3 grams to your mouse.

The Dragonfly R1 Pro models have a better sensor, a more convenient lens arrangement, more premium buttons, and the electronics weigh about one gram less. You pay $25 to $30 more for these upgrades, and it will shave 0.8 grams off your Li’l Magnum!

The R1 and R1 SE were out of stock on Aliexpress when I was ordering my second mouse. I had to buy the model with the larger battery. This isn’t the end of the world, because I can swap batteries around to figure out what an R1 Pro Max and an R1 SE would actually weigh in the Li’l Magnum! shell.

The Pro models upgrade you from a 19,000-DPI sensor to a 26,000-DPI sensor. This doesn’t matter for me in practice, because I am playing Team Fortress 2 with all my mice set to 3,200 DPI. I can’t tell the difference between my pair of Li’l Magnum! mice.

At this point, I think you should buy the cheapest mouse that you can find in the VXE Dragonfly R1 lineup if you want to try printing a Li’l Magnum!.

The Pro came in much nicer packaging, came with extra skates, and there was an assortment of precut grip tape included in the box. We can’t use the giant skates, but the grip tape is handy!

The tape works well, and I was able to cut off a few pieces to fit my Li’l Magnum!. I’d wind up spending $10 on Amazon to order a whole mess of generic grip tape. It might be nice if my grip tape didn’t have weird patterns printed on it, but this might be a good excuse to buy the R1 Pro.

Aesthetics aside, the VXE grip tape is fantastic. It has an interesting feel to the surface, and it is slightly spongy. It makes for a comfortable experience!

One minor advantage to the lower-end VXE Dragonfly R1 mice is that they support Bluetooth. You wouldn’t want to be stuck playing a competitive game using Bluetooth, but I would find that handy for my laptop bag. Especially since it is a free feature of the more affordable mouse.

I would like to have DIY kits stocked in my Tindie store with precut grip tape and skate packs appropriate for the Li’l Magnum!, and I think it would be nice to have reasonably priced 3D prints in stock for people without access to a 3D printer. I haven’t tested any large sheets of grip tape yet, and I don’t think I have put enough miles on the prints to be confident enough to sell them to anyone yet.

If building a fingertip mouse is your goal, then I would avoid the R1 SE+ and R1 Pro Max. These include a 520-mAh battery that weighs 4.3 grams more than the 250-mAh battery in the other mice in the lineup. That doesn’t sound like a lot, but my 27-gram Li’l Magnum with the big battery feels significantly heavier than the 21-gram or 22-gram setup. It might not be worth spending a lot more money to save a couple of grams, but in this case you save money and weight at the same time.

Do you even want or need a fingertip mouse?

Most people probably shouldn’t own a fingertip mouse. I am enjoying having a 21-gram mouse while playing Team Fortress 2, and I expect to always have one at my desk.

It is probably giving me a slight edge over using the R1 Pro at its full original 49 grams, but that really only matters here because I am playing on a team against 12 other human players who are also using mice. That slight potential advantage doesn’t matter when you are playing Red Dead Redemption 2 or Borderlands 3!

That said, there are plenty of games where a lighter mouse could be a huge help. Trepang2 benefits from landing headshots, and Roboquest is a frenetic game that also rewards you for hitting small critical locations. I would much prefer using a 21-gram Li’l Magnum! to a 49-gram R1 Pro for single-player games like these.

You can buy a 36-gram VXE Mad R mouse with an 8K receiver for $46. That is about what I paid for my VXE R1 Pro, but it is 25% lighter and comes with a better receiver. You could also spend a little more on a 30-gram Zen 8K. If you could have regular mouse that weighs 30 or 36 grams, do you really need a 21-gram fingertip mouse?

NOTE: It would be easy to dial in the Li’l Magnum to fit a VXE Mad R. It may even fit fine in one of the existing models. If you own one, and you want to make it fit just right, talk to me in Discord!

Li'l Magnum fingertip mouse is currently 22.5 grams with the VXE Dragonfly R1 SE PCB

I didn’t choose the Dragonfly R1 Pro because it was the lightest mouse or even the lightest mouse for the price. I chose it because there is a $19 version with slightly reduced specifications. Maybe you don’t want to spend $150 to try a Zeromouse Blade, and you aren’t excited about disassembling a $50 mouse to try my ultralight fingertip mod.

I don’t know about you, but I would spend $19 and print 6 grams of PLA to try out an ultralight mouse. I might hate using that new mouse, but who cares?! It is a fun project. I have spent $20 on much stupider things. Even if you hate it, you can put the original mouse back together and have a nice 52-gram mouse.

You might not hate it. You might absolutely love using an ultralight mouse. Maybe you’ll keep using the Li’l Magnum!. Maybe you’ll dial in the size and shape to fit your grip perfectly. Or maybe you will upgrade to a Zeromouse Blade.

The $19 Dragonfly R1 was out of stock when I ordered, so I had to order a $22 Dragonfly R1 SE+. Both of these mice share the same PCB, but my R1 SE+ comes with a larger battery that is 4.3 grams heavier.

Where does a 21-gram fingertip mouse really shine?!

I can tell you that the day I switched from using the 49-gram VXE Dragonfly R1 in its original shell to the lighter shell, I was doing worse while playing Team Fortress 2 instead of better!

Everything was at least the same or slightly better while things were calm, but my reactions got much worse when another player got right in my face, and I had to make big mouse movements to keep them near my crosshairs. It was so easy to overshoot their position when the mouse didn’t weigh anything. This seems to have mostly been a problem of muscle memory.

The same was true to a lesser extent when I switched from the 97-gram Logitech G305 to the 49-gram R1 Pro. It was exponentially better AND worse dropping all the way to 21 grams!

The minuscule footprint of the fingertip mouse sure seems to help with my vertical aim. You are able to pull the mouse farther downwards without having to move your wrist out of the way. I am definitely doing a better job of tracking scouts, demomen, and soldiers that are arcing over my head.

Demonstrating stiction

You can see how far the heavy Logitech mouse moves when I put just barely enough force into it to break the stiction

That is mostly subjective. I found a little test to demonstrate the difference in stiction between my 21-gram mouse and my 97-gram Logitech G305, and I can even show it to you.

I did my best to move the cursor the smallest amount possible. You can see in the animated gif that every time I break the heavy Logitech mouse free of its grip on the mousepad it jumps more pixels than the Li’L Magnum!, even though they are set to the same DPI and feel quite comparable in normal use.

I would expect this to be a huge advantage when playing sniper, because you’ll have an easier time moving the cursor two pixels to the left to land on someone’s tiny head in the distance, whereas with the heavy mouse you might just jump completely to the opposite side!

I have been playing with the 21-gram mouse for more than a week now, and my muscle memory has definitely gotten used to the lower inertia. I don’t freak out as often at close range. I don’t know that I am any doing better than I did in the old days in those near-melee range fights, but I am confident that I am doing significantly better at medium and long ranges.

I had a lot of trouble dialing in the lens holder for the R1 SE+!

Designing a fingertip frame for the R1 Pro was surprising easy. It has the lens glued to the PCB, so all you have to do is suspend the circuit board above the surface. I only had to dial in the position and tension of button paddles. I had a working mouse in three or four iterations, and I was playing Team Fortress 2 a few hours after I got started.

The R1, R1 SE, and R1 SE+ use a separate lens piece. I had to get it lined up in precisely the correct position, and I had to put just enough tension on it from below to hold it in place when the PCB is screwed in place.

I even managed to make the job harder for myself. I accidentally made the hole in the bottom for the camera too small. I didn’t realize I was blocking most of the infrared light from the LED. It was usually mostly working on my mouse pad, but it wouldn’t pick up anything on other surfaces, and sometimes it would get all sorts of jittery.

Lens setup of the R1 SE in the Li'l Magnum shell

First revision of the Li’l Magnum!’s lens holder for the R1 SE mouse

Opening up the lens hole fixed most of that, and that let me shave more than half a gram off the Li’l Magnum! shell. Dropping the height of the PCB fixed every bit of jitter or lift lag that the R1 SE+ was giving me. Now I couldn’t tell you which mouse is which without looking.

I had quite a bit of hubris when I got started making the adjustments for the R1 SE. I printed two partial mice to test the lens holster, and I thought for sure my third print would be an actual working mouse.

It wasn’t. I have eight 1.5-gram partial prints that each took 14 minutes to print, and I then I have one full 35-minute mouse that blocks too much light. That isn’t too bad, but not as quick and simple as I expected things to go!

After fixing the lens holder, I broke the Li’l Magnum for the R1 Pro!

Lowering the PCB of the R1 SE by one full millimeter fixed my jitter issues completely, so I figured I ought to be able to split the difference and set the PCB height for both the R1 SE and R1 Pro to something in between.

My initial attempt sure seemed to work, so I uploaded the new STL files.

Test prints for the lens holder

I fired up a game later in the day, and I noticed that the R1 Pro wasn’t always tracking correctly, and it wasn’t as smooth as it should have been. I accidentally put the sensor too close to the mouse pad!

I am not sure why I decided that I just had to have the same PCB height for both mice, but I made it work. Both mice are now two 0.16-mm layers closer to the mousepad.

I am surprised how tight of a needle you have to thread to stay within the Goldilocks zone.

If the R1, R1 SE, and R1 Pro feel the same, why buy the R1 Pro?!

The R1 and R1 SE make for a slightly heavier Li’l Magnum! than the R1 Pro. The electronics weigh 0.7 grams more, and the extra material to hold the lens on the R1 and R1 SE adds another 0.5 grams to the weight of the Li’l Magnum! shell. I might be able to shave another tenth or two off the model, but it is important that the lens be held in place well!

Is 1.25 grams worth an extra $30? That is up to you, but I don’t think it is.

I am not a professional competitive first-person shooter player. Just because I can’t feel a difference doesn’t mean there isn’t a difference. The R1 Pro and Pro Max have a better sensor and a faster processor, and that may translate into slightly faster response times. Maybe saving 0.8 grams isn’t worth $30 on its own, but maybe knowing that you have better hardware adds some value.

UPDATE: This is slightly incorrect. I have been trying to dial in a PCB height that both the Pro and SE are happy with, so I have been flipping back and forth a lot. The R1 SE has stiffer switches. Not by a lot, but you can feel it. That is an obvious tell!

I wish I could do a quick, proper switch to do blind mouse changes in the middle of a game of Team Fortress 2, but I don’t have the right hardware to do that. I have one big battery, and I have one small battery. I can build out a Li’l Magnum! that is equivalent to any VXE Dragonfly R1 mouse, but can’t have two light builds assembled at the same time.

The heaviest configuration of the R1 SE circuit board combined with the 520-mAh battery still feels super light at 26.8 grams. That is still an amazing gaming mouse on its own, but it feels quite a bit heavier than the 21.4-gram setup!

How heavy are the R1 SE+ and R1 Pro Max with their big 520 mAh batteries?

This is an easy question. A Li’l Magnum! built with an R1 Pro Max currently weighs 25.5 grams, and a Li’l Magnum! built with an R1 SE Plus weighs 26.8 grams.

That sounds light, but that is more than enough difference that it is easy to feel. Even at 27 grams, that is still an amazing gaming mouse, but it feels quite a bit heavier than the 21.4-gram setup!

We are on our way to a parametric fingertip mouse with the Li’l Magnum!

Adding the small differences to print a Li’l Magnum! for the R1 SE to the R1 Pro’s OpenSCAD source code has given me a chance to start tidying things up a bit.

These two mice are almost identical, so it was pretty easy. Two screw holes are shifted slightly, the R1 SE needs a holster for the lens, and that holster needs some bracing to keep the lens solidly in place. Just toggling the pro variable in the source code changes the handful of things that are necessary to crank out the correct STL file.

I think I should go a little farther before releasing the OpenSCAD code, and I am making steady progress. I’d like to break things out so that the code that defines a particular mouse would go in one file, and the shared functionality would be in an included library.

All mice PCBs will have standoffs, screw holes, side grips, and buttons. Each mouse will have locations and sizes for each of those things. The more mice I can support, the more generic the library will become!

I was excited to learn that the Finalmouse is planning to sell the bare PCB used in the Zeromouse Blade, but then I clicked through the Finalmouse store. Not a single mouse is currently in stock. Will the bare circuit board be as difficult to purchase as a mouse?

I feel that customization will be important. I read a review of the original Zeromouse on Reddit that said that using the Zeromouse is like trying to fit your hand into Optimum’s glove, and I can only assume the same is currently true of my Li’l Magnum!. I am extremely comfortable with my Li’l Magnum!, and I am excited to have been able to upload a second glove size for everyone to try, but I bet we could use more shapes of glove!

Conclusion

I am beyond excited about this second Li’l Magnum! shell. Now someone can spend $18 on one of the best values in low-latency, high-DPI gaming mice, print one of my shells, and have a chance to experience a 22-gram fingertip mouse. Maybe you’ll love it. Maybe you’ll hate it. It doesn’t really matter, because you only have to spend $20 to find out.

If you do love it, that’s fantastic! Then you might want to splurge on something more premium like Optimum’s SLS-printed Zeromouse Blade, but maybe you’ll be happy with your Li’l Magnum!. I know I am, and I will continue to iterate on the design because I am having a blast!

Are you using a Zeromouse? What do you think of the experience? I definitely want to try one! Are you gaming with one of the other fingertip mouse mods? Which one are you using, and are you enjoying the experience? Are you planning to try my Li’l Magnum! mod? Is there another mouse that I should tweak my design to support? Tell us your thoughts in the comments, or join our Discord community where we talk about 3D printing, mice, gaming, and other geeky nonsense!

Can We Compete With The Zeromouse For Under $25?

| Comments

I am just going to put the tl;dr right up at the front. I wanted something like Optimum Tech’s Zeromouse. I tried the fake Logitech G304 upgrade, and it was awesome using a 29-gram mouse, but the electronics were jittery and terrible. I wound up discovering the 49-gram VXE Dragonfly R1 Pro for about $45. I ordered one. I love it. And I managed to design a skeletal shell that brings the mouse down to under 24 grams. I would still consider it a prototype, but it works great.

My 3D-printed skeletal fingertip ultralight mouse

I have ordered a $22 VXE Dragonfly R1 SE. It should fit the same 3D-printed skeleton with minor tweaks. It might wind up being a couple of grams heavier, but I am excited that you will be able to print your own Zeromouse-style ultralight mouse for under $25!

UPDATE: The $22 VXE R1 SE+ is in my hands, I’ve since named my fingertip mouse frame the Li’l Magnum!, and I have already been gaming with my new $22 Li’l Magnum! for several days.

I am not even sure how to refer to this style of mouse. “Ultralight” seems appropriate, and I have heard them referred to as fingertip mice. I am partial to calling them skeletal gaming mice, but I may have made that up on my own!

The 49-gram VXE R1 Pro is amazing

I was gaming with a 100-gram Logitech G305 last month. My ultralight-mouse shenanigans clued me in that I could pair a tiny piece of aluminum foil with a 7-gram USB-C rechargeable AAA battery, and that dropped the G305 to 79.5 grams. That was an upgrade that I noticed, and I thought it felt fantastic. After spending a week with the VXE Dragonfly R1, the Logitech G305 feels like a brick.

I don’t think you need to modify your VXE Dragonfly at all. Mine was 49 grams out of the box, and it feels amazing. The battery lasts about a week on a charge for me.

My VXE Dragonfly R1 Pro and my Logitech G305 side by side

My 49-gram VXE R1 Pro next to my 100-gram Logitech G305

The lightweight VXE R1 Pro feels a little cheap, but I don’t think that can be helped. The Logitech feels premium because of the heft. You can’t shave weight off every single part of the mouse without making things feel a little flimsy.

If you are still using a heavy, old-school mouse, I most definitely think you should try one of these mice. I don’t even think you need to swap it into one of my 3.7-gram shells. A 50-gram mouse is a HUGE upgrade, and you don’t even have to adjust to a weird style of mouse. The VXE R1 has a similar enough size and shape to my Logitech G305.

The R1 Pro isn’t even the lightest mouse from VXE. I just gravitated toward this model for this project because it is quite light, and I was tickled by the fact that there is an $18 model. You can buy a 36-gram VXE Mad R mouse with an 8K receiver for $46, and with a 36-gram mouse, do you even need to mod it down to 21 grams?

If you are planning to use my 3D-printed skeletal shell, then you want the VXE R1 Pro and not the Pro Max. The Pro Max has a larger battery that adds an additional 6 grams.

I think Optimum Tech’s Zeromouse Blade is worth every penny

Though I am saying this as someone who hasn’t tried the real Zeromouse. It is 3D printed using laser-sintered nylon. Nylon is a much more premium material, and the printing process generates a more premium-feeling product than my Bambu Lab A1 Mini makes at home. Not only that, but the custom lightweight electronics in the Zeromouse are known to be high quality and extremely low latency. I believe $150 is a reasonable price for a custom piece of hardware like the 19-gram Zeromouse Blade.

I wasn’t even aiming at the new Zeromouse Blade when I ordered the VXE mouse. I was just hoping to make something similar to the previous iteration of the Zeromouse.

Aside from the previous revision of the Zeromouse shell being out of stock, I was disappointed that it required an $80 Razer V2 donor mouse. That is an outdated model now, which does make it cheaper than the Razer Pro V3, but it might not be available to purchase for all that much longer. I’d hate to design a mouse shell around something that is going away!

I also didn’t like the idea of spending $150 on a mouse that is so much different that what I have been using for 35 years. What if I hated it? What if I used it for an evening, threw it in a drawer, and never looked at it again? That would be a bummer!

I already tried a cheap fingertip mouse with a terrible sensor, and I enjoyed it a lot. My VXE Dragonfly mod is my second ultralight mouse. I can tell you that I would happily pay $150 for the new Zeromouse Blade, but that would be a lot less fun than designing my own and sharing it with you!

Where are we so far?

I am honestly amazed at how quickly this is progressing. I messed around in OpenSCAD for a couple of days before even taking the mouse apart, and I had all the screw holes within 0.5 mm of correct before I even had the PCB in hand to test out. My first full print was a little too small, but my second print was an actual functional mouse!

It took two more partial test prints to both perfectly line up the button positions with the paddles and to get a snug lateral fit on the PCB. Hugging the sides of the PCB significantly increased the rigidity of the mouse, and it feels quite solid now. That is the model that I uploaded to Printables and MakerWorld before starting to write this blog post.

Lots of progress on the skeletal fingertip mouse

A couple of days later, yesterday as I am writing this paragraph, I came up with a better solution for keeping the mouse wheel in place. I printed the tiny new part that slips over the microswitch, and I snipped out the old wheel support brackets from my existing print. This makes it SO MUCH easier to assemble a working mouse, it weighs slightly less, and I knew it would allow me to tighten up the wiggle in the button paddles.

I significantly tightened up the paddles this morning, put a slight angle on the finger grips, and eliminated the wheel supports. That print was only 0.1 grams heavier, way sturdier, and seemed to fit great, but the extra rigidity in the paddles meant that my buttons were both stuck in the on position! I am waiting for that part to print as I write this paragraph. I want that plunger length dialed in perfectly!

I feel like I am just about in a place where I get away with calling the STL file version 1.0, but the OpenSCAD source needs a lot of tidying up.

I think I am doing pretty well at aiming for six days of testing!

We have a 23-gram, 26,000-DPI, low-latency mouse that you can build for less than $50. I think that is fantastic, and I wouldn’t be surprised if I can get that down under 22 grams with a few slicer tweaks and a switch from PLA to ABS filament. The entire skeleton is 5.7 grams when printed in PLA, so there isn’t a ton of room for improvement here.

UPDATE: Printing my skeletal fingertip mouse with single walls and fewer top layers brought my total mouse weight down to 21.4 grams, and the whole thing feels nearly as rigid as it did with default print settings. I haven’t switched to ABS yet, but that ought to save another 0.7 grams or so. I don’t believe this is necessary.

I am confident that it won’t take much effort to tweak this design to fit the $18 VXE Dragonfly R1 or the $22 R1 SE. I imagine that those mice will feel indistinguishable during gameplay, except that I don’t know how much their circuit boards weigh. I do know for sure that we will have to print a small, dark piece of plastic to cover the giant LED in those cheaper mice!

I have had to shim the buttons

Some of the skeletons I printed felt fantastic. Others have buttons that felt spongy. One of the skeletons with all the same offsets was so tight that the buttons were constantly pressed without even touching the mouse.

The trouble is that the little plungers sit on top of support material, and they don’t always come out exactly the same. I have tiny support pegs under the switches, and I figured out that I can cut a few tiny pieces of electrical tape to use as shims between the PCB and that peg to dial in the feel of the buttons.

3D-printed skeletal fingertip mouse at 23.33 grams

The mouse I am using at the moment has one layer of tape under the right button and three layers of tape under the left. Each layer is about 0.15 mm, but the rubbery tape is a bit squishy, so it might take up less space in practice.

I have been printing my prototypes on my Bambu A1 Mini at my usual layer height of 0.16 mm. I can definitely switch to 0.1 mm layers for more precision, and I can also switch to a PETG support interface layer with zero gap to set the height of the plunger with more accuracy. That will help for my own mouse, but I have no idea what the tolerances are on your PCB!

NOTE: I may have mostly figured out the solution to this problem. We’ll see if it holds true. I am excited that the easy fix also dropped the total weight of the mouse to 21.4 grams! The explanation of the problem and why the solution works would be almost as long as this blog post.

My hopes for the OpenSCAD source code

I would love it if we could just punch some new mounting hole locations and button positions into the OpenSCAD code and generate a skeletal mouse for any similar gaming mouse PCB, but I wasn’t nearly careful enough in the layout of the code to allow for that.

Underside of the 3D-printed skeletal fingertip mouse

I ordered a huge pack of 6-mm PTFE skates. I don’t have many of these ancient football-shaped skates on hand. Thankfully, the textured bottom surface makes them easy to remove, or I would have run out of them on the first day!

I will be stoked if I can clean things up enough that you could go to MakerWorld’s parametric model maker so you can enter your own button height and length, thumb and finger pad positions and lengths, and tweak some settings to make the buttons stiffer or looser. I’m not far from that being possible, so I plan to set that up once I put the finishing touches on my own mice.

I would like to add a curve to the button paddles and finger grips, and that should be configurable in the parametric configurator as well.

How do I like gaming with a 23-gram fingertip mouse?

It is weird, and I am most definitely not quite acclimated to it yet. If you think switching to a featherweight mouse will instantly improve your FPS-gaming abilities, you will be extremely disappointed. You are almost definitely going to get worse before you get better!

My old Corsair mouse was nearly 100 grams. My recently purchased Logitech G305 is around 100 grams with a single AA Eneloop battery installed, but I have been gaming with it using a 7-gram USB-C rechargeable lithium-ion battery and a small piece of aluminum foil. That has brought the weight down to 79 grams.

Playing Team Fortress 2 with the stock 49-gram VXE R1 Pro already made the 79-gram Logitech mouse feel like an absolute brick. Switching from the 23-gram skeletal mouse back to the brick feels even more dramatic.

Pat's time played in Team Fortress 2 by class

I have both mice set to 3,200 DPI, and I can execute reasonably precise 90- and 180-degree turns with either mouse, but the skeletal mouse FEELS faster. It is especially noticeable when an enemy gets close, and you have to quickly adjust your aim to lock on and track them. I keep overshooting with the lightweight mouse. I had the same problem when I switched from the G305 to the R1 Pro, but it is more extreme with the skeletal mouse.

It takes so much less effort to get the mouse to start moving, so I am tending to push the mouse too hard for small and medium moves.

I am not good at playing scout in Team Fortress 2, but I assumed this would be the class where I would most notice the missing weight of the mouse, and I am definitely doing worse playing scout at 23 grams than I was at 49 grams. That said, I am pretty good at landing pills with the demoman, and I feel like I am doing a reasonable job there.

I suspect that the answer is going to be lowering my sensitivity. It will be easy to adjust to needing to move my mouse farther to turn around, and a lower sensitivity will help me be more precise on the smaller movements. I just figured that I should give myself more time to acclimate before making changes.

Do you want to know what the weirdest thing is about these light mice? You can’t spin the scroll wheel unless you are gripping the mouse. When you attempt to spin the wheel on a loose mouse, you wind up just pushing the mouse around!

Conclusion

It is exceedingly difficult to not print just one more mouse. I keep saying that I am going to stop, but then a couple of hours go by, and I print a slightly different mouse. I am really going to stop now. At least for a while. I feel like I need to put a week or two into actually using a good skeletal fingertip mouse. That way I will have a better idea of what improvements I should actually be making.

I am aware that I have not yet met the expectations of this blog post’s title. I have only modded a $45 mouse down to 21 grams. The $23 mouse is on its way, though, and I am confident it will be easy to tweak the design to make its hardware fit my shell!

What do you think? Are you excited about the idea of a $25 fingertip mouse? Or do you think something like the 36-gram VXE Mad R is light enough? Do you prefer using a heavier mouse? Are you planning on trying out my model, or are you already using a different fingertip mouse mod? Tell me about it in the comments, or join our friendly Discord community where we talk about 3D printing, video games, and many other geeky topics!

Should You Enable Smart Queue Management To Mitigate Bufferbloat?

| Comments

I haven’t had Smart Queue Management (SQM) enabled on my Openwrt router in a very long time. I am not even sure if what I was using in the olden times was called the smart queue management, and it has been so long that I don’t even remember exactly what I used to have enabled on all my old asymmetric cable and DSL connections. All I remember for certain was that I used to use some sort of quality of service (QoS) package for OpenWRT that would let me set numbers for my upload and download speeds that were a little lower than my actual speeds, and this would keep my link from getting saturated and driving up latency.

My bufferbloat test results after dialing in SQM on my OpenWRT router

It was more than a decade ago when I upgraded to my first symmetric fiber Internet connection at home, and that massive boost in upload speed on my 35/35 megabit connection made enabling QoS almost entirely useless. We have had several upgrades over the years, and today we have a symmetric gigabit Ethernet connection at home. We could go higher, but then we would need to pay more AND upgrade the router!

I have once again enabled OpenWRT’s SQM. One of my friends in our Discord community was bragging about his A+ score on the bufferbloat test score after configuring fq_codel on his OPNsense router, and that made me curious whether or not I should be doing the same.

Do you need queue management with a fast symmetric Internet connection?

Queue management has a dramatic impact when your Internet connection’s download speed is 10 or 20 times faster than your upload speed. There are several reasons for this, but you can see the most obvious culprit if you watch your network traffic while running an Internet speed test. You will probably see around 2% as much traffic on your uplink while your download test is running.

The additional latency when filling up your cable modem’s download capacity isn’t a bufferbloat problem. This is just a consequence of not having enough upload bandwidth available. If you have a cable modem, you should probably be running some sort of queue management.

Bandwidth utilization during download speed test

You can see my meter showing 16.7 megabits of upload bandwidth being used while the speed test is pulling 831 megabits on the downlink

In my case that is around 17 megabits of uplink while seeing 800 megabits down on the speed test. This is nearly enough upload traffic to fill up Comcast’s gigabit cable service, and I’m not even sending any actual useful data up.

I don’t have to worry about this, because I still have more than 800 megabits of unused uplink bandwidth.

This is probably the tl;dr for this blog post. I have never noticed additional latency from other people in the house streaming movies or downloading large files. It never shows up on my Smokeping graphs, and I never feel it when playing something latency sensitive like Team Fortress 2.

I doubt I will ever notice that I have enabled SQM on my OpenWRT router, but I am glad that I have it enabled now just in case!

Enabling SQM made a huge difference, so why won’t I notice it?

The ping times only go up when I max out my available upload or download bandwidth. We could stream 10-bit 4K HDR content to every screen in the house and only use a fraction of our available bandwidth. Most sites on the Internet don’t manage to saturate my connection, though I can max out my uplink when publishing a YouTube video, and Steam can just about fill the whole downlink when updating a game.

Bufferbloat results before enabling SQM

I disabled SQM after I had everything dialed in just to run another test and take this screenshot. I don’t remember the original test result being nearly this bad!

Either of these things usually only take a few minutes. Those few minutes would have to coincide with me playing a latency-sensitive multiplayer game or participating in a video call. The odds of that happening are slim.

What OpenWRT settings did I change?

I think it was worth trading a couple of dozen megabits of bandwidth for much improved worst-case latency, but it was a bit of work to get things dialed in right, and my exact settings won’t work for you. I do think it is worth telling you what worked well for my setup.

You should follow the advice on traffic shaping from the OpenWRT wiki. That’s what I did!

I tried to use the cake module, but my aging Linksys ACM3200 just doesn’t have enough single-core CPU performance. The cake SQM immediately maxed out one of my cores during a speed test, and my download speed was limited to 560 megabits per second.

My router has plenty of horsepower for running fq_codel and the simple.qos script. From there, I just kept bumping up my download and uploads speeds on the basic settings tab until bufferbloat test test results showed my latency increasing. When I they did, I backed off a bit.

I got curious while writing this blog post, and I asked Google if there were any options for getting cake to use more than one CPU core. I didn’t expect to have much luck, but I figured there was a chance that there is something newer and better than cake. I found nothing of the sort.

Packet Steering in OpenWRT LuCI settings

I did find something useful. There is a checkbox in the global network options to enable packet steering. Ticking that box allowed me to inch my upload and download speeds up by 20 or 30 megabit before my latency started to increase again. That was a nice little bump, but as it suggests in the OpenWRT interface, your mileage may vary here!

Conclusion

I feel that turning on SQM traffic shaping and giving up 5% of my maximum bandwidth to reduce my worst-case latency by dozens or even hundreds of milliseconds is a fantastic trade. That is such a small price to pay to never have to worry about a random download or update somewhere in the house goobering up my aim in Team Fortress 2!

I bet I spent an hour or two dialing in my downlink and uplink numbers to get as much bandwidth as I possibly could without significantly pushing up the latency when congested, but you don’t have to work that hard. Just enabling SQM and entering what you believe are your actual upload and download speeds will probably get you 90% of the way to perfect, and that is probably way better than you were doing before!

If you found this blog post insightful, I would love to hear your thoughts and experiences with Smart Queue Management (SQM) and OpenWRT! Have you noticed a difference in your network performance after enabling SQM? What settings worked best for you, and do you think queue management is necessary for high-speed symmetric connections?

Join our Discord community where we share tips, tricks, and experiences with our own homelab setups! Engaging in discussions with fellow enthusiasts could help you fine-tune your setup and understand your network better. Let’s optimize our networks together!

Being Able To Print ABS On My Bambu A1 Mini Is Delightful

| Comments

This is going to be a short post, because I don’t have a lot to say. I am sure you have been seeing the hubbub lately about how you can print ABS on top of a layer of PLA while keeping the bed temperature way down at 60C. I am mostly just here to tell you that it works, and it works extremely well!

I have been digging my own rabbit hole the last couple of weeks. I discovered a superlight skeletal mouse shell replacement for a fake Logitech G304 mouse that cuts the weight from around 90 grams to 45 grams.

Skeletal mouse printed in ABS on top of PLA on my Bambu A1 Mini

I modified the design a bit to make it more comfortable, then I removed some parts to drop a few grams. That wasn’t light enough for me, so I started tweaking top layers, bottom layers, and perimeters to shave even more weight. I knew the next step was to print in ABS to save another 2 or 3 grams.

The trouble is that my dedicated ABS printer is my Sovol SV06. It is set up with a 0.6-mm nozzle, so it tends to lay down more plastic than necessary for spindly parts. Even with tweaks that was going to wipe out all my savings from the switch to the lighter ABS filament.

The other problem is that the Sovol doesn’t dial in flow rate automatically like my Bambu A1 Mini. I used to print exclusively with ABS when I owned a wooden 3D printer in the olden days, and I absolutely hated removing support material from ABS prints. I knew dialing in the flow rate perfectly would help, and the Bambu would do that for me.

Why can’t the Bambu A1 Mini print ABS?!

You need to get your print bed up to 100C to keep ABS in place. I tried printing ABS with the bed set to its maximum temperature of 80C when I first got the printer, and I had partial success. Very small parts printed fine, but my parts that were around an inch square at the base came loose from the bed after a dozen layers.

You can get around this problem by setting the first layer to print in PLA. That lets you leave the bed at 60C or 65C, and the PLA has no trouble adhering to the bed for the entire print job. In fact, it seems that the PLA first layer does a better job adhering to the bed than ABS will manage with a 100C bed!

You don’t have to have an AMS Lite to make this happen. You can manually swap filament after the first layer.

Filament use

I wound up reducing the weight of the mouse by almost three grams by switching from PETG to ABS

I don’t even know the correct way to print ABS with the AMS Lite. The printer and slicer didn’t even let me select ABS filament when I tried it last year, and I have been printing my mouse in PETG. I just edited the PETG profile settings that I was already using. I bumped the minimum temperature to 255C, bumped the flow rate up to 19 cubic mm/s, and I just let the machine believe it was printing PETG.

That probably isn’t ideal. The ABS profiles for the Bambu A1 surely have tweaks that do a better job of controlling cooling for bridging, but this definitely got the job done.

I couldn’t believe how easy it was to remove the tree supports!

In the days when I only printed ABS, I avoided supports at all cost. In modern times, supports aren’t so bad with PLA and PETG. Both the slicers and the printers are way better than they used to be, and they’ve improved significantly in just the last couple of years. Supports usually just pop right off of my print on the A1 Mini, while I used to have to attack the same sorts of prints with a pair of pliers on my Prusa MK3S.

I only just realized this week that I may not have printed an ABS part using supports since tree supports were added to Prusa Slicer.

I was amazed. The ABS tree supports almost fell right off my print. It was almost like using a PETG support interface layer on a PLA print. It was a delight!

But my printer’s bed isn’t limited to 80C, is this of any use to me?!

Yes! It seems that printing ABS on a layer of PLA has better adhesion and less chance of warping than printing ABS directly on the bed. This is true with either an open printer or which a chamber.

I imagine there is a point where a heated chamber and a properly hot bed will help keep a tall and complicated ABS part from splitting at the layer lines half way up, but I think I am always going to default to using a layer of PLA on ABS prints whenever the option is available.

Conclusion

I am not breaking any new ground here. JanTec Engineering might have been the first to show us the technique, and Thomas Sanladerer did some really good testing to show us which filament combinations do and don’t stick to each other.

I just figured it might be a good idea to write this blog, raise my hand, and say that this also worked well for me!

ABS is an important filament for me. It is one of the few common 3D-printing materials that survives sitting on the dashboard in the Texas sun. I don’t print ABS a lot, but when I need it, I actually do need it. Being able to print ABS on my Bambu A1 Mini just gives me one less excuse for hanging onto my Sovol SV06!

Should You Run A Large Language Model On An Intel N100 Mini PC?

| Comments

The simple answer is no. The Intel N100 is slow and only has single-channel RAM. You’re not going to get any work done chatting at a reasonably sized and capable LLM on your Celeron N100 mini PC.

A better answer is more complicated, because you can run a large language model on anythin with enough memory. I set up a Debian LXC on one of my N100 mini PCs, installed Oobabooga’s text-generation webui, and downloaded Qwen 2.5 in both 1.5B and 0.5B sizes in 5-bit quants to see how things might run.

AI Man talking to a tiny llm robot

What’s the tl;dr? They ran, and don’t use much RAM, but they are both quite slow. When I just go back and forth asking small questions, it starts responding in just a couple of seconds. It took nearly four minutes to write me a conclusion section when I paste it an entire blog post. Short questions average 5 tokens per second with the 1.5B model, while the task with 2,500 tokens of context averaged around 1 token per second.

I did not attempt to finagle Oobabooga into using the iGPU. I suspect that might slightly improve time to first token, but the bottleneck here is the slow RAM.

It is probably also important to say right up front that you don’t have to use a Celeron N100. You can get a Ryzen 5600U or 5800U mini PC for around double the price, and those have dual-channel RAM, so they should run language models almost twice as fast. You should also keep in mind that twice as fast as slow is probably still slow!

What do I usually do with my local LLM?

I sometimes use Gemma 2 9B 6-bit to help me write blog posts. It is the first local model that does a nice job generating paragraphs for me, and it runs somewhere between 12 and 15 tokens per second on my 12 GB Radeon 6700 XT. Time to first token is usually just a second or two even when there is a good bit of context, though it does take a little longer when I paste in an entire 2,500-word blog post.

I find myself using OpenAI’s API more often these days. The API is cheap, more capable than my local LLM, and so much faster.

OpenAI’s extra speed isn’t all that important, but it does help. My local LLM will output a conclusion section for my blog a little faster than I can read it, but being able to see the entire output from OpenAI in three seconds is definitely an improvement.

My eyes will skim into the second or third paragraph, and they might see something incorrect, too corporate sounding, or just plain goofy. I don’t have to read every word to know that I need to ask OpenAI to try again. This doesn’t save a ton of time, but it does save time.

Why do I let the robots write the conclusion section for my blog posts?

The truth is that I rarely use more than a paragraph or two of the conclusion that the LLM gives me, and what I do use winds up being moderately edited.

The conclusion section of a blog post tends to be a little repetitive, since it will at least be a partial summary of everything that I already wrote. Letting the artificial mind take a first pass at that saves me some trouble.

My Oobabooga Proxmox LXC stats while running Qwen 2.5 0.5B

Not only that, but sometimes the LLM will write things in the call to action that I would never say on my own. I have been embracing that, and I have been letting some of those sentences through.

Gemma 2 9B is the smallest model I have tried that does a good job at this. In fact, I often feel better about the words coming out of Gemma’s mouth than I do about the paragraphs that ChatGPT writes!

How awful is Qwen 2.5 1.5B compared to Gemma 2 9B?

I don’t want you to think I did some sort of exhaustive test here, and I certainly didn’t run any benchmarks. I just asked Qwen to do the same things I normally ask Gemma.

I will say that I was extremely impressed with how coherent Qwen 1.5B was when I asked it to write a conclusion for one of my blog posts. It included details that were drawn from the entire post, and it wrote paragraphs that mostly made sense.

Qwen 2.5 1.5B trying to write a conclusion for one of my posts

Qwen 2.5 1.5B’s attempt at writing a conclusion for a blog post about a 33-gram mouse

Some of the conclusions that it drew were incorrect, but those could be easily fixed. Qwen 1.5B just didn’t sound as friendly or as real as Gemma 2 9B.

Why not run Gemma 2 9B on the Intel N100?

Things aren’t quite this simple in the real world, but the speed of an LLM is almost directly proportional to the amount of RAM or VRAM the weights consume.

Qwen 0.5B runs between two and three times as fast on my Celeron N100 as Qwen 1.5B. Odds are pretty good that Qwen 1.5B will run four to six times faster than Gemma 2 9B.

Qwen 1.5B is already too slow for me to work with.

What was I hoping the Intel N100 would be fast enough to accomplish?

Just because I wouldn’t wait around for four minutes to have Qwen 1.5B write worse words than ChatGPT can write in two seconds doesn’t mean running an LLM on this mini PC would be useless.

I have been grumpy with Google Assistant for a while. I often use it for cooking timers, and it used to show me those timers on my phone, but whether the timer display would show up was inconsistent. Now I can’t remember the last time I saw that work. Sometimes I can ask about the kitchen timer from the bedroom, and sometimes I can’t.

I was livid last week when I asked how much time was left and Google happily responded with, “OK! Consider it cancel.” I already don’t like that her grammar is poor, but now I had to guess how much longer my potatoes needed to be in the oven.

Many of the parts to assemble your own local voice assistant exist today. There are projects building remote WiFi speakers with microphones using inexpensive ESP32 development boards. Whisper AI does a fantastic job converting your speech into text, and it can do it pretty efficiently. There are plenty of text-to-speech engines to choose from.

I know that Qwen 0.5B isn’t built with function calling in mind, but that is all right. I just wanted to know how quickly a model like this could respond to simple questions that I might ask a local voice assistant.

The Celeron N100 did a fine job. She responds to short questions almost as quickly as my cheap Google Assistant devices, though I was definitely cheating because there is no speech to text step happening here!

Does a Celeron N100 have enough horsepower to process audio and run an LLM?

Sort of. This is the first time I have ever bothered to turn on the whisper_stt and either the coqui_tts or silero_tts engines. At first, I was a little disappointed. Then I switched whisper_tts from the small.en model to the tiny.en model.

My test question was speaking, “How is the weather?” into my microphone. The tiny.en model could process that text in under 1.5 seconds. Then Qwen 2.5 0.5B could generate a response in roughly 2 seconds. The unfortunate part was that either of the included text-to-speech engines required dozens of seconds to generate audio to be played back.

Asking my local LLM on the Celeron N100 questions that it cannot answer

I am confident that the latter problem can be solved. I remember using tran.exe on my 7.16 MHz Intel 8088 more than thirty years ago. It may not sound as good, but we can definitely generate a voice response WAY faster than coqui_tts in 2024.

I understand that Qwen can’t tell me about the weather, but this is the sort of thing I ask Google Assistant all the time. How else will I know if it is raining? I can’t go ride my electric unicycle in the rain!

I was just trying to figure out if my Intel N100 mini PC would be capable of running a competent enough LLM to be the voice assistant for my home. I do believe that it could do the job. We would just need to find a tiny LLM that is tuned for function calling.

I have high hopes for the future of small models!

First of all, inexpensive computers are getting faster all the time. The Raspberry Pi was the best deal in tiny, power-efficient computers five years ago. Then the Pi got way more expensive, and mini PCs with the Intel N5095 started getting cheap. It is hard to beat an Intel N100 today for low-price, low-power, and relatively high-performance compute, but in a couple of years it will surely be displaced by a newer, faster generation of processor.

Smaller LLMs are getting smarter. I started my machine-learning journey a little more than a year ago messing around with Llama 2 7B, and it was barely competent at the blog-related tasks I was hoping to squeeze out of it. Llama 3 8B and Gemma 2 9B are both miles ahead and extremely useful.

As long as the small LLMs keep improving, and low-power mini PCs keep getting faster, we will reach a point where these meet in the middle before long. Then we will have a fast and capable voice-activated intern sipping 7 watts of electricity.

Conclusion

Did I find an answer to the question I didn’t even ask? Yes.

I was initially curious just how big of a large language model we could run on the Intel N100 mini PCs in my homelab, and that led me to wonder if this was enough horsepower to handle the hardest parts of what our Google Home Mini devices are doing. I think the Intel N100 is up to the task, and it isn’t even offloading the hard work to the cloud like the Google devices are.

I think I am going to leave this running. Having Qwen 0.5B loaded is only eating up 800 megabytes of RAM on one of my Proxmox servers. Maybe that will give me an excuse to poke at it every once in a while to see how useful it is, but I suspect that the high time to first token will keep pushing me away.

What do you think? Do you have a use case where you could tolerate waiting several minutes for a lesser LLM, or would you prefer to use the cloud? Do you have a use case for a small model on a power-sipping server? Tell us about it in the comments, or join our Discord community where we talk about homelab servers, home automation, and other related topics!

Can We Make A 33-Gram Gaming Mouse For Around $12?

| Comments

UPDATE: This is a fun read, but don’t print this! I have put together a 21.5-gram fingertip mouse for the VXE Dragonfly R1 mice. This is built around a proper high-DPI, low-latency gaming mouse that starts at about $18. The $8 fake Logitech mouse isn’t even close.

I got here in a rather haphazard way. My inexpensive but surprisingly awesome 10,000 DPI low-latency Corsair Katar Pro wireless mouse was having connectivity issues. The same day, there was a deal on a Logitech G305 Lightspeed mouse for $30, so I immediately ordered one. These mice have a similar shape, similar weight, and the Logitech G305 might have slightly better latency and definitely has a way better sensor.

The skeletal fake G304 superlite mouse that I am actually using

This is the mouse I am currently using. It has the extra finger rest on the side, and that 0.17-gram bar across the front makes the buttons feel SO MUCH less flimsy!

It took less than 24 hours for the Logitech mouse to arrive, and I discovered in those 24 hours that my Corsair mouse was stuck in a low-power mode. I did some button-holding shenanigans while turning the mouse back on, and it is now happy. It now has a permanent home in my laptop bag.

One of the awesome things about the Logitech G305 is the ridiculous number of 3D-printed mods available on Printables and Makerworld. One was a mod inspired by Optimum Tech’s 26-gram wireless mouse. The trouble is that this Logitech G305 mod isn’t for a REAL Logitech mouse. I had to order a fake Logitech mouse to try it out!

I immediately printed the superlight skeletal mouse in PETG on my Bambu A1 Mini, and I ordered a pair of fake Logitech G304 mice from Aliexpress for about $8 each. I had to order two in order to get free shipping.

Can you do this mod without a soldering iron?

Maybe. It sure looks like the battery holder has a cutout that is meant for squeezing the spring-loaded battery terminal through, but I couldn’t manage it. Instead of forcing it, I spent 20 seconds desoldering and resoldering the ground wire.

Let’s get the disappointing part out of the way immediately

These are the best $8 mice I have ever bought. I beat the crap out of a Roboquest level on the Guardian 2 difficulty level. The plastic mold isn’t as nice as the real thing, but it is really quite a good fake!

The fake does not have a 12,000 DPI sensor. Not even close. It is also possible that the Logitech G305 has a much higher DPI than claimed. I had to drop my sensitivity in Roboquest from around 150 to 60 when I plugged in the real Logitech mouse. I had to raise the sensitivity all the way up to 450 when I tried playing with the superlight fake Logitech G304.

I don’t have scientific equipment on hand for measuring DPI accurately, but I did do enough messing around with the settings on my real Logitech G305 to say that the fake is probably using a 1,600 DPI sensor.

Even so, I played pretty well considering how weird my grip on this new mouse was. I might have been playing better than I was the night before.

The skeletal fake G304 next to a real Logitech G305 and a fake Logitech G304

I will need to play for a few weeks to understand how I feel, but here is the important part. While the raw specs of the $8 mouse are obviously disappointing, they aren’t disappointing enough in real life to immediately give up this project.

I should also mention that the product pages for all the fake Logitech mice made it seem like they work with Logitech’s software, and that made it seem like they might pair with real Logitech Lightspeed USB dongles. If that were the case, then they would also share Logitech’s low latency.

My fakes are in no way compatible with Logitech’s hardware or software.

I was hoping that the fake Logitech mice would be better than Bambu Lab’s mouse kit. It seems like they are quite similar, but at least the fake Logitech mouse uses much nicer switches!

How light is a 45-gram mouse?

I didn’t order any fancy skates, and my cheap PVC leather mouse pad isn’t exactly the most friction-free mousing surface. I just used my heat gun to loosen the adhesive on the skates that came installed on the fake mouse, and I stuck them where it made the most sense on the skeletal mouse.

My 45-gram Logitech G304 fake from Aliexpress

I did one thing that immediately made me understand just how light this skeletal mouse is even at its starting weight of 45.6 grams. I tried to scroll with the mouse wheel, but the mouse moved backwards instead of turning the wheel!

I have to have a bit of grip on the mouse to keep it in place while scrolling. The stiffness of the detents in the fake Logitech mouse’s wheel feel pretty similar to the real Logitech mouse.

My hopes and goals

I was hoping that the mouse would indeed have a 12,000 DPI sensor. I was already ham-fistedly tweaking the model in Orcaslicer to shave a few grams off before my mouse hardware even arrived. Removing the USB dongle holster, carving out a bit of excess material, and adjusting some slicing parameters immediately saved me nearly four grams.

That doesn’t sound like a lot, but my skeletal mouse started at 45 grams. That is already quite light, but that is almost twice as heavy as Optimum Tech’s $150 dollar wireless mouse. I don’t expect to be able to shave 19 grams off this cheap setup, but I would be pleased if I could close half the gap.

I think it will be fun to tweak the 3D model to take off some weight, but I am not so sure I want to spend any more money on this project. It sounds like I can shave off another four grams with an upgrade to a USB-C rechargeable AAA battery.

Skeletal Logitech G304 Fake at 35 grams

You can see some printing imperfections on the mouse-button paddles due to pushing the number of top layers a little too low in order to save weight!

I wasn’t sure that I wanted to sink even a few more dollars into this 1,600 DPI mouse, but who am I kidding? Of course I ordered a four pack of 7.6-gram AAA batteries at $4.50 each. If I am going to mess around with an ultralight mouse, I may as well go as far as I can. Especially since it is only going to cost me $5.

I had assumed that I would build my own parametric mouse in OpenSCAD from the ground up if I enjoyed the skeletal mouse enough. It would be nice to be able to enter in angles and positions to help dial in the grip, wouldn’t it?!

While I enjoyed the idea of building that parametric model around the $8 mouse, it just is not a fast enough mouse to put that much design effort into. The real Logitech G305 might be worth that kind of effort. We will have to see how the long-term experiment goes!

I am still excited. Spending $8 to $12 on a 35-gram mouse is amazing, and the fake Logitech is performing well enough that I can’t complain too much.

Why isn’t 45 grams light enough?!

I bought my nice Logitech G305 for $30. I ordered a pair of $8 fake Logitech mice the next day. Then Woot had a refurbished Pulsar X2 Mini for $40. That is a super low-latency 26,000 DPI mouse that weighs only 51 grams, and it cost less than what I paid for my new mouse and the pair of experimental units.

The Pulsar X2 Mini isn’t a weird skeletal mouse. It looks and feels like a normal mouse. I feel that I have to beat that by more than six grams to justify the effort of using a strange mouse!

I imagine 45 grams is light enough. It just isn’t light enough for me.

Difference between 1,600 DPI and 12,000 DPI

My inexpensive Logitech G305 doesn’t even have a high-resolution sensor these days, but the fact is that the returns are diminishing as the DPI goes up. You probably don’t need a 50,000 DPI mouse, but it is definitely a bummer using a 1,600 DPI mouse.

When I set my real Logitech G305 to 1,600 DPI, you can see just how irregular the movement is in game when moving the mouse slowly. It seems identical to the $8 mouse.

3400 hours in Team Fortress 2

I am most definitely not a professional first-person shooter player, but I have put in a lot of time. I hope my skill level is at least a little above average!

I feel that this validates how awesome a lightweight mouse can be. I do not notice the jerkiness of 1,600 DPI while I am dodging bullets and twitching my aim all over the place. I do believe I notice a difference in how easy it is to get my crosshairs pointed where I want.

Maybe. I will play using my 33-gram mouse for a week or so. Then I will switch back to the 97-gram 12,000-DPI mouse.

I might be at the limit at 33 grams!

I removed the dongle holster. I took material off the side buttons. I reduced top and bottom layers throughout the model. I limited the 3D-printed part to one perimeter for the first two millimeters. The only place the mouse has grown is my addition of a spot to grip with my ring finger.

I don’t think I can remove any more material from this design without the buttons getting too wobbly. I have already tried and failed.

I left the battery cover off. That saved 1.5 grams.

I desoldered one of the side buttons that I don’t use. That saved me 0.6 grams. The mouse felt a little too floppy when I removed both. I opted to just solder one button back on instead of modifying the model.

My AAA Eneloop battery weighs 11.7 grams. I replaced that with a 7.42-gram lithium-ion AAA battery.

I reprinted the mouse skeleton in ABS while I was finishing up this blog post. That skeleton came in at 6.89 grams, which is a whopping 1.5 grams lighter than the PETG version!

The ABS version with one of the side buttons desoldered using a lithium-ion rechargeable AAA battery comes in at 33.6 grams. Should I reprint the battery holder to attempt to shave off another 0.25 grams?!

Why Roboquest?!

Roboquest is fun, it is extremely replayable, and you have to move constantly and aim for small critical spots on the enemy robots. This seems like the right sort of game to put a 33-gram mouse to the test!

I played a lot of Roboquest when it was released, but I stopped playing because you can’t save your game. It is a fantastic game because it loads fast and you get right to the action, but it is a bummer that you have to commit 30 to 60 minutes on one complete run without stopping.

The recent update saves your game between levels. This means I can play for 5, 10, or 15 minutes then take a break, so I have been playing a lot the last few weeks!

What’s next?

Assembling this lightweight mouse dropped me directly into the center of a conundrum. I thought it might be fun to design my own ultralight mouse to fit my hand, but I sure don’t want to put any work into designing something to fit the $8 mouse if it is only 1,600 DPI.

Designing something around the real Logitech G305 might be interesting. It isn’t the fanciest wireless gaming mouse, but it is no slouch and often goes on sale for $30. Designing a lightweight skeletal frame for a proper low-latency mouse with an actual 12,000 DPI sensor would be fun, and it is even better if you can put the whole thing together for less than $40!

My skeletal superlight fake Logitech G304 at 33.46 grams

NOTE: I looked at some teardown photos of the real Logitech G305, and I am not certain that it’d be a good fit for a mouse of this style. The primary mouse buttons seem to be built into the top half of the shell. It would be easier to build something around a mouse where all the buttons are soldered directly to the PCB!

I guess this is where the conundrum lives. Putting the crappy mouse on a massive diet has somehow made for a fantastic FPS gaming experience. Every time I switch back to the heavy 12,000-DPI low-latency mouse, I feel like it is a way better experience. Then I try the 33-gram mouse again, and aside from the noticeably less fluid motion, I play and aim at least as well.

I am already at the point where I feel that I just HAVE to try a 33-gram skeletal mouse with premium electronics!

There are inexpensive, high-DPI, low-latency, ultralight mice on the market!

I have been searching for a nice, inexpensive mouse with the buttons attached to a single PCB just like the $8 mouse from Aliexpress, and I think I have found some good candidates.

Every mouse in the VXE Dragonfly R1 series looks awesome. The base model has great specs, weighs 55 grams, and only costs $19! The lightest mouse in the series has a better sensor, better electronics, weighs only 48 grams, and only costs twice as much at $40.

I think that sounds pretty fantastic without even modifying the mouse, and I am extremely excited about these prices. I hate the idea of asking you to buy and dismantle something like a $170 Razor V3 Pro only to learn in two weeks that the skeletal mouse frame just isn’t going to work for you.

I feel way better about the idea of asking you to take apart a $20 or $40 mouse!

UPDATE: I bough the R1 Pro. I designed a fingertip shell for the R1 Pro. The R1 Pro is awesome. Skip this fake Logitech mouse mod.

Conclusion

I am only on the first step of this journey, so I don’t have much advice yet. I can say that if you are on a really tight budget, or if you need a spare mouse to keep in your laptop bag, you can definitely do worse than grabbing one of these fake Logitech G304 mice from Aliexpress. I think you’d be better off spending a bit more on the real Logitech G305 if you can.

I can also say with certainty that just printing the skeletal shell from Makerworld and sticking the $8 mouse guts inside has been a fun project all on its own. If you are looking to have some fun and wouldn’t mind spending eight bucks on a 3D-printing experiment, then you shouldn’t wait for me to figure out the next step in my journey. Just go buy the cheap mouse from Aliexpress and have some fun!

I would like to hear from you! Are you using something like Optimum Tech’s 16-gram wired mouse or 26-gram wireless mouse mod? Are you already using a more mainstream lightweight mouse? Or are you like me, and you’ve been using a heavy 95-gram mouse all this time? Tell me about your gaming setup in the comments, or stop by our Discord community and tell me about your mouse!

My Networking and NanoKVM Pouch For My Laptop Bag

| Comments

In days that have long gone by, I used to carry all sorts of useful gear in my laptop bag. At the time, I was working a job where I would spend most of my time at my desk, some of my time in meetings, but also a not insignificant amount of time fiddling with things in our ice-cold datacenter. I would actually make use of the tools and gadgets fairly regularly.

Then 9/11 happened, the TSA sprung into existence, and I had to be careful to remove things like my Swiss Army CyberTool from my laptop bag before flying.

My network and NanoKVM pouch

Side B of my network and NanoKVM pouch. This is the more interesting side!

Fast-forward twenty more years, and I don’t often need all the cool tools and gear that I used to carry, but I can’t stop myself from wanting to carry them. Not only do I want to tote around everything I might possibly need, but now I use two or three different laptop bags.

When I ride my wheel to the park, I might take my small shoulder bag that only has room for the essentials, and I don’t want extra gear weighing me down. When I take my laptop in the car, I am way more likely to take my bigger backpack that has room for everything I could possibly need, and the car doesn’t care if I pack an extra five pounds.

Should I buy two of everything and keep both bags well equipped? Should I weigh the giant bag down with every possible piece of gear? I’ve decided this is a bad idea. Some of the equipment that I carry isn’t exactly cheap, but I also don’t want to fill the bag any more than I have to, because I often grab my laptop bag when I want to also carry something that ISN’T my laptop. Having a big empty pocket in my bookbag to stick a PlayStation 4, a bag of CNC-cut parts, or a pair of pants is handy!

Pouches seem like the best option

You can use a 3D printer or a CNC router to make awesome hard cases with intricate slots that perfectly fit all your tools, toys, and connectors. The trouble is that when you make things exactly the right size, then they may only fit that one specific version of an item. If you lose your mini screwdriver, or you upgrade your gigabit Ethernet USB dongle to 2.5 gigabit Ethernet, your new device might not fit in your toolkit anymore.

You can squeeze just about anything you need into a pouch. I believe I chose a pouch that is a little too small for my extra networking gear. I probably should have bought the slightly bigger pouch.

Side A of the network and NanoKVM pouch

This is Side A. This is where the cables and couplers live.

If you underpack your pouch, the air doesn’t take up much space. That means you can probably squeeze it into a smaller space inside your backpack. A CNC-machined case made out of hardwood always takes up the same amount of space no matter how much stuff you put inside.

My pouch weighs in right around 18 ounces. That doesn’t seem like a ton of stuff, and it wouldn’t weigh down my small laptop bag all that much. This would have seemed like absolutely no weight at all a decade ago, but this pouch weighs half as much as my entire 14” 2-in-1 laptop. Why lug it around when I don’t need it?

My plan was to pack two separate pouches!

I planned to pack a NanoKVM pouch to replace my massive Pi-KVM kit, and I planned to pack something that I was calling my networking pouch.

If the latter pouch just had a long flat-pack Ethernet cable and a 2.5-gigabit Ethernet USB dongle, I would have just put one of each in both my laptop bags. I was also including a travel router, extra cables, power for the GL.iNet Mango router, and my smallest USB battery bank. That stuff alone grew into a bulky enough assortment that I didn’t want to duplicate it for both laptop bags.

My network pouch next to a Raspberry Pi 5

The new pouch is quite a bit bigger than the pouch from the NanoKVM blog, but it holds so much more gear now!

It made sense to me to separate out the NanoKVM, but then I realized that the NanoKVM is ridiculously tiny compared to what I needed to carry to use a Pi-KVM. I also recognized that there would be a lot of cable overlap between these two kits, and I was also excited about the idea of being able to add WiFi to the NanoKVM using the Mango router in a pinch.

One bigger pouch seemed smart, and this kit would be way more useful to anyone who needs to borrow it!

Where do you get an organizer pouch?

I don’t know about you, but I have all sorts of zippered containers tucked away in my closet. So many toys, gadgets, and headphones come with nice storage and travel containers that I never use.

I was using the large zippered pouch that came with my awesome Amazon box teardown tool to hold my bulky Pi-KVM kit. Two decades ago, I started using the little pouch that came with a Norelco shaver to keep network converters, USB adapters, and other small things from spilling out into my laptop bag.

Test fitting my network pouch

The Mango and NanoKVM sure didn’t want to stay put in that giant pocket! Yuck!

There are handy containers everywhere. When I started organizing my network-only toolkit, I was using a pouch that came with a diabetes blood sugar testing kit. It was actually a fantastic size! The trouble was that it didn’t have enough pockets or straps to hold all my stuff, so I was just kind of stuffing it all in there. When you just stuff things into the pouch, everything wants to fall out when you unzip it!

I wound up buying a $9 BAGSMART organizer from Amazon. I chose it because of the size of the pockets inside, and it was two inches taller but maybe an inch thinner than the pouch I was already using. This worked great as my network-only pouch, but there wasn’t nearly enough room to add a NanoKVM and a thick HDMI cable.

Then I found a pouch that was roughly double the size: same length, same width, but it has two zippers. I chose the “small” model, because the dimensions were almost identical to my BAGSMART pouch. That and the photos made me believe the pockets would be roughly the same size. They aren’t even close. While the BAGSMART pockets were big enough to fit the GL.iNet Mango, the new pouch’s pockets weren’t even close.

3D Printed Gear Rack

My 3D-printed gear rack. The little ears on the sides slide into the large pocket to keep the whole thing in place.

Maybe stepping up to the “medium” organizer pouch would solve this problem, but I was already committed. I borrowed a design idea from Earthling EDC, and I 3Diprinted a gear rack that I could strap the Mango, the NanoKVM, and my smallest USB power adapter to. This is great for me, but it might be better for you to just buy the bigger pouch!

What is in my pouch?

Should we just start with a bullet-point list?

I know I will never use the crossover or rollover cables again. I have had them in my laptop bag for nearly 20 years, and they used to come in handy all the time. I can just plug them into one of the RJ-45 couplers, and I can use any available network cable as a long crossover or rollover cable.

Just about every network device has supported automatic MDI-X for a long time, so I couldn’t even guess when I last needed to use a crossover cable. I don’t think I have seen a rollover serial port in just as long, and I may never see one again. Neither of these cables take up much space.

I imagine the use case for the pair of Ethernet cables would be obvious. Carrying two cables is handy. That way, I can plug my laptop into the router, and I can plug the router into the wall. I could also use one of the handy RJ-45 couplers if I need 15’ of reach.

Flat-pack network cables are awesome at home or on the road. They take up less space in your bag, but they’re also easier to tuck in along the edge of a room if you have to run a cable across your home office.

There are some extremely thin HDMI cables on Amazon, but I haven’t tried them. I believe the HDMI cable that I packed in my kit shipped with the Steam Link. It isn’t quite as thin as the newer cables on Amazon, and I have to admit that I am tempted to tidy up my bag a bit with a new cable, but Valve’s HDMI cable is thin enough that it isn’t taking up a ridiculous amount of space.

Why carry a travel router? And why the GL.iNet Mango?

This entire pouch would be so much smaller and simpler if I didn’t pack the travel router, but this little OpenWRT router is one of the coolest little network tools that I own!

The Mango is one of the cheapest and smallest OpenWRT routers out there. The diminutive size is awesome for this pouch, but sometimes cost is just as important. I used to wind up leaving a lot of things behind. You might replace somebody’s bad network cable with one you have in your bag. You may give away your USB flash drive full of operating system installers just so someone can sneakernet some data. There’s a good chance I will leave a cheap bit-driver set behind for someone who doesn’t have any tools.

I figure that there is a good chance I might leave my travel router behind. I might leave it for friends to use, or I may leave it behind for more nefarious purposes!

I bought my Mango on a whim for $20 a few years ago. It is pretty underpowered. It only has 2.4 GHz WiFi, the LAN and WAN Ethernet ports are only 100 megabit, and it only has enough horsepower to run Tailscale’s encryption at about 8 megabits per second.

Mango and Slate AX

Just the gl.iNets Mango and Slate AX for size comparison

That last part is the exciting bit. I can plug this into a network jack at an undisclosed location. I could power the Mango with my USB power bank, connect it to the Starbuck’s WiFi, and connect to it remotely via Tailscale to use as a jump host or an exit node.

I can set up an impromptu WiFi network so I don’t have to stay close to the wall. I can loan it to a friend if they remote access to their own network. In fact, I have the admin credentials, WiFi password, and subnet information printed on the bottom of the router. That makes it easy to hand the Mango over to someone else who might need to use it.

The convenient interface that GL.iNet puts in front of OpenWRT is a delight. It takes one or two clicks to do things that would take dozens of clicks in OpenWRT’s LuCI GUI, but they still give you access to LuCI on the advanced tab.

Shoehorning Tailscale onto the Mango was a bit of a challenge. It just doesn’t have enough flash storage on board to even store the binaries! I wound up storing Tailscale on a petite USB flash drive. That wound up being handy. I can just pull the drive out if I don’t want the router to be able to connect to my Tailnet, and I used the remaining 15.8 gigabytes on the flash drive to store ISO images that are all bootable using Ventoy.

The NanoKVM does not have a WiFi chip. This is probably the best reason I had to combine the NanoKVM stuff into the same pouch as the GL.iNet Mango. I can always plug the NanoKVM into the Mango, then configure the Mango to bridge to either nearby WiFi or my phone. That would allow someone remote access to the KVM without needing to find an RJ-45 jack.

Should you buy a GL.iNet Mango?

Probably not, but maybe! You can often find the Mango on sale for $23, but you can usually find the much more modern SFT-1200 Opal router on sale for $31.

I like my Mango. The Mango is still cool, and it is still usually $10 cheaper than the Opal!

My Mango is less than a quarter the size and weight of the Opal, but it is old and slow. The Opal could easily handle router, firewall, and probably QoS duties for my home’s 1000/1000 fiber internet connection. I also bet that pair of external antennas attached to the Opal’s much more modern WiFi chipset offer better range.

My gl.iNet Slate AX and my network pouch

My Slate AX next to my network pouch as a stand-in for the Opal that I don’t own!

The Opal is an upgrade by every measure except size and weight, and those upgrades over the Mango are worth way more than the extra $10 you have to pay for one.

I don’t have an Opal SFT-1200 here, but I do have a similarly sized Slate AX GL-AXT1800. The Slate would take up an entire half of my pouch, and it wouldn’t even be able to close correctly. I feel like this would be a very different and much larger kit if I were to upgrade it to the Opal.

Do you even need a network kit like mine at all?!

Most people don’t. Almost everyone is always going to just connect to WiFi, and if they can’t connect to WiFi, then they are going to just give up. That describes me in 99% of situations.

You are here reading this blog post, and you are still reading. You might do the sort of work that requires you to crawl around under desks, hang out in wiring closets, or spend time in heavily air-conditioned server rooms. I suppose the last one doesn’t happen much anymore, and that makes me a little sad.

If you do this sort of stuff all the time, then your laptop bag is already packed with the tools you need. Maybe you are like me, and you used to need these sorts of items regularly, but now you only need them occasionally. Your pouch may not look exactly like mine, but I bet it is a good idea to separate things into their own container just so you don’t have to carry them around all the time.

Separating these things out into their own pouch is also handy because I can easily lend them to a friend or coworker.

Conclusion

Pouches are awesome. I think that’s the most important thing I have to say here. As long as the things inside aren’t delicate, they are a great way to stuff more stuff in your bookbag.

I am still tempted to create a custom hardwood tool case for my laptop bag with perfectly machined slots for all my important tools. It would be a delightful project for my CNC machine, and it would be so much fun to show something like that off, but it would only be able to hold a particular set of tools.

I think that you should build out your own networking toolkit pouch, but I don’t want you to copy mine! I would like to see you pick and choose the tools you will actually use, and I would love to hear what you equip your toolkit with!

Did I pick out a good set of tools for myself? Or did I miss something important? Is there an awesome device, cable, or tool that I should have included in my NanoKVM and networking pouch? Tell me about it in the comments, or join our Discord community and tell us about the tools we are missing out on!