The Ultimate CNC Bluetooth Speaker




Introduction: The Ultimate CNC Bluetooth Speaker

About: I'm a college student with a passion for engineering, high voltage, and cool projects in general. I have made a 5ft Tesla Coil, 8.5 ft. floating arm trebuchet, a bluetooth speaker, racing drone, and many oth...


There are many Instructables that teach about building your own bluetooth speaker. However, most are oriented toward those with a small budget and/or little access to tools. This speaker will cost a bit more, take some time, and involve many different tools. At my school I have access to a 3D printer, a CNC router, and a CNC plasma cutter. I decided to combine parts from all three to create a speaker, near as I could do it, to a JBL Xtreme. All of the files are sized accordingly.

Why use Xtreme as a guideline? Well, I currently own a JBL Charge 3, and wanted something similar. Its shape, (as far as I can tell), has not been attempted by anyone else as for cutting it out of wood. The Charge has great (and loud) sound, awesome passive radiators, and a 20 hour battery life. Well, my goal was to make a speaker with at least the volume of the Charge, and greater than 5 hours of battery life. I didn't get so optimistic as to make one louder and better than the actual Xtreme; after all, I am one guy competing against a company.

I also was going to include Amazon's AVS (Alexa Voice Service), but the necessary components would not fit inside the speaker body. (The raspberry Pi)

.SLDPRT and .STL files are included on the next page.


· Long Battery life

· USB charging out

· DC charging in

· Auxiliary input jack

· Bluetooth (duh)

· Stainless steel hardware

· Mahogany Casing

· Great and loud sound, slightly louder than the Charge 3

Parts/Materials List

· 6 feet of 5/4” mahogany, at least 6.75” wide

· 1/8” thick steel, at least 5” by 9”

· PLA filament

· 6x 1.5” by ¼” bolts

· 6x ¼" nuts

· 12x tiny wood screws

· 3” 8 ohm driver (speaker)

· 2x 1.75” 8 ohm drivers (speakers) I salvaged these from a JBL Charge 1, so look for something similar

· 4x 18650 Li-ion batteries

· 2x Double 18650 battery holders

- 3A Step Down Voltage Converter

· Latching stainless steel button, LED lit

· TDA7492P (The P is important) Bluetooth/Amplifier board, with AUX input

· Female auxiliary port

· Female DC input jack

· Female USB port

· Aux cord

· 2 resistors, between 10 and 40k ohms

· Small gauge wire, a lot of it

· Electrical tape, and heatshrink (optional)

· Construction silicone

Step 1: Figure Out Your Limitations

If someone had the exact same tools, programs, and salvaged material as me, it would blow my mind. Before starting this project, you need to know what parts you are capable of making, and out of what material.

I made this out of mahogany. But any hardwood should work. I printed parts out of PLA. But other filament materials should work. The grill was made out of steel.

These are the specialty tools I used to make this:

  • Makerbot Replicator + 3D Printer
  • Legacy Maverick CNC
  • CNC Plasma Cutter

The coolest aspect about this project is the wood aesthetics, but I realize most people will not have access to something capable of cutting it out. That's why I have included the .STL's, so if you want to print the two halves, you can. You should also be able to print the grill, with a little file manipulation. I didn't include a .STL for that, as most probably want to make their own custom logo for it.

On the other hand, if you have a CNC but not a 3D printer, you could cut out the body, and maybe hand-make the parts? If you find yourself in this position, just send the files to a 3D printing company. You can find many online to custom order from.

And finally, cost. By salvaging parts, and getting creative, I have spent about $80 on the electronic components. With the Raspberry Pi and a mic it would be over $120. So don't start making this, only to realize you don't have enough to finish.

With all that in mind, let's move on to preparing the wood for cutting.

Step 2: Preparing Wood for Cutting

Some considerable thought had to be put into this. I was creating a round, and hollowed out object. The first thing I thought of was to cut it in concentric rings, as shown with my part screenshot. But with that way, it would result in 14 individual pieces, that would then have to be carefully glued together. Not to mention, it would make mounting things inside very difficult. So instead, I created two separate halves that could then be bolted/glued together at the end. Also, if I wanted it to cut out the inside and the outside of each half, the model would have to fit entirely within the block of wood.

So, I found the maximum dimensions of the speaker body halves:

  • Length - 11 1/2"
  • Width - 5 1/8"
  • Depth - 2 7/16"

Then, to make it fit inside, as well as have extended ends for mounting, I came up with the following dimensions for each wood "block":

  • Length - 16 1/2"
  • Width - 6 5/8"
  • Depth - 2 5/8"

And finally, to also make sure it would cut both sides, the model would need a boundary vector to prevent the CNC from cutting where I placed the mounting holes. (This is explained later.)

The blocks are set so that the model is offset 3/32" from the top and bottom faces. If it was not, the CNC would finish cutting one side, and the part would be entirely incapable of being mounted to cut the other side.

So, I cut two pieces of mahogany to 18", ran the long edges through the jointer on both, and then cut both to a width of 6 5/8". I decided to plane first, so I planed both boards down to 1 5/16". I then put a copious amount of glue on one face, and clamped the two boards together. After letting it dry, I trimmed it down even more to the 16 1/2" on the length. Last, I drilled holes centered in each corner, 3/4" from both edges. Drill it to the diameter of whatever dowel you are using to help secure the block to the CNC bed. Repeat this entire process for the second wood block.

Step 3: Cutting on the CNC

I used Aspire 4.0 for importing the part and creating the g-code for the CNC. I then used Legacy's Mach 3 software for running the code.

Note: (For those who don't know.) According to my knowledge, CNC's cannot simply have a .STL file for an input. You have to create a toolpath for it, (instructions that tell the machine every move, spindle speed, etc.), using another software tool.

Back to the instructions. I imported the .STL into Aspire as a 3D model, making sure to size it back to its original dimensions. Just typing in one resets all, so I typed 11.5" into the x dimension. I then went into the modeling tab, and created a boundary vector. After putting the offset to 0.6", I created a 3D roughing toolpath that uses a 0.5" straight bit. Saved it as G-Code (inch) arcs, and then made a 3D finish toolpath, setting the boundary vector boundary to 0, and selected a 0.25" straight bit. Repeat this for the other three sides that need to be cut.

I am skimming over this part because the toolpath files are already created and available for you to use. Just in case your CNC requires different code, is why I'm outlining how I went about this.

Apply some sticky tape to the bottom of the board, and drill holes in a sacrificial piece on the CNC bed to match those in the wood block. Make sure everything is square. After securing it in place, go through the process of setting the zero's for your CNC. Load the code, and run your first roughing toolpath with the 0.5" bit. It will take a while. I recommend cutting the outsides of each half before the inside, simply because there is more material to take away on the outsides. Watch each toolpath carefully, and be ready to quickly stop it should something go wrong. More explanation below.

IMPORTANT: This piece requires a 1/2" bit with the ability to plunge down to 2.5". Make sure your bit is long enough to do the job! It doesn't need a 2.5" cutting length, just a shaft that is long enough to go down that far without plunging the CNC head itself into the workpiece. Now, for the finishing toolpaths. 2.5" long 1/4" straight bits are not readily available. Because of this, I had to be careful to watch, and quickly stop all four finishing toolpaths before they tried plunging too deep. As shown by the last picture above, I was a little late on the first one. The bit holder came down on the top of the wood, and left a nice burn mark. Something much worse could have happened had I not stopped it in time.

Step 4: Separating the Model From the Block

These toolpaths are such that after cutting both sides of one half, you then run the piece through a wide belt sander (or something similar) to remove the last bit of material holding the piece to the block of wood. If it were not this way, the piece would disconnect after cutting one side, and you would be unable to secure it to cut out the other side.

I ran each half through probably like 30 times, so if you can find a way to safely use a planer, then do it.

Afterwards, there was still a thin "skin" of wood around the edges of each half. You can easily remove this with a utility knife/razor blade, and then sand it to your hearts desire.

Step 5: More Sanding, Radiator Mounting Clean-up

As shown from the file, I designed this to be a cylinder that tapers on both ends. Due to not having a good round bit, the steps left by the CNC are still pretty visible. I left the most pronounced ones, and sanded the lighter, and harder to see ones smooth. I think the steps look pretty cool, and add some character. I didn't bother sanding the inside at all, because it is going to be hidden anyway.

Now, a more major problem due to the stepping of the CNC. The passive radiators a) would not fit, and b) would not mount flush on the ends as they were. These were designed perfectly in Solidworks, but I had to stop the finishing toolpath early due to reasons mentioned earlier. So, in order to make this work, I had to spend some time with a Dremel. Use whatever bit that works easiest for you, I used one that looked like a drill bit, but could cut horizontally and vertically. Get these to the point where silicone will be able to seal the radiators to the ends, and that they will actually fit inside the recessed circular area.

Getting this to look good with a Dremel is difficult, I know. Just do your best to take your time, and keep a steady hand.

Step 6: Drilling, and Cutting Mounting Holes

Now is the time to pull out a caliper, or just get really accurate with something else. The holes for the drivers (speakers) is what's next. I measured the inside diameter of each speaker. DO NOT measure the outside diameter (the face plate). Otherwise, the entire driver will fall through, and not mount at all. I then carefully measured on the front face of the speaker body, and tried to center and space the speaker holes as best I could. Keep in mind the overlapping front face when spacing these out. Then, drill them out with a large forstner bit, or a hole saw.

Now for the rear port. Due to the same finishing toolpath issues, you will need to cut the rear port hole to the correct size. I did this with a jig saw.

The top switch hole was not part of the 3D file at all, as the CNC cannot cut at that angle. So, I cut this out with a jigsaw as well.

Note: I got impatient, and you can see that I already have the drivers mounted at this point. Do not do it yet! You could damage them with some of the stuff we still need to do to the speaker body.

Step 7: Applying a Finish to the Body

After planing the mahogany, I found that the wood underneath was much lighter than the outside. To rectify this, I hand rubbed in one coat of Danish Oil, which darkened the wood, and brought out the grain. After letting that dry, I put 5 successive coats of wipe on poly onto the body. (All of this was on the outside, the inside is not seen.) I did this with a cloth rag.

Step 8: Electronics Note


This part was somewhat difficult as well. I had a lot to fit in a small amount of space. I bought the cheapest, and yet usable components that I could find. I improvised things, made components work in ways they weren't meant to, and changed things several times.

This system initially started as 4 lithium cells in parallel, and converted up to 12v and 5v for the amplifier, and USB ports. With this way, knowing the batteries voltage was literally impossible without tearing apart the speaker. I started this way as I wanted to be able to charge the speaker via micro-USB. But, it charged terribly slow, and the up-converters allowed the batteries voltage to get critically low before noticing any difference in audio. And the audio! The converter to the amplifier couldn't handle the amount of current, so the speaker could only reach half-volume before the amp started cutting in and out. Unacceptable.

So, everything inside the speaker has a little more wear than if it had been installed the new way the first time. I wired three lithium cells in series, and paired the fourth with the third in parallel, bringing the fully charged system to 12.6v. The batteries typically get down to 10.5v, and then they give out entirely due to their protection circuits. I'm okay with that. A step-down converter was used for the USB charging out. A standard DC input jack was used for charging it. This means that to charge the speaker now, I would need a power supply to plug into the wall with. But, the speaker could also now reach full volume now (louder than my Charge 3!), so the pros outweighed the cons.

Version 1.2 (as I call it) meets all my initial requirements of a bluetooth speaker. It subsequently has a new 3D printed back port, to hold the DC input jack instead of the female micro-USB. This new file is what's included in the Instructable.

Step 9: New Charging/Battery System

Step 10: IDevice Charging

Something that I did not know previous to making a USB charging port, was that Apple is more greedy than I initially thought. For charging any iPhone, or iPod, it requires a "special" charger. They don't tell what's different about them, but if you try to simply connect 5v + and - to the female USB port, they won't charge. Period.

Thanks to the wonders of YouTube, I learned how to wire it so it will work. All you need is your 5v converter, and a couple of resistors. You create a miniature and basic voltage divider. I just found two resistors where one was approximately 2/3 the resistance as the other one. I used 390 ohm and 470 ohm resistors, but any similar proportion of resistances should work. Connect them in series, and have the two data lines (the green and white wires) connected at the junction of the two resistors. The positive and negative wires (red and black) should be connected separately to the other ends of the resistors, with the larger value resistor containing the positive lead. At the end, put some heat shrink or electrical tape on the whole bundle. Refer to the pictures, it should help.

What this does is steps down the voltage to about 2.25v. By experimentation, with this voltage I have found that it tells your iDevice to pull up to 1A of current. This should be a healthy amount for most devices you charge by USB. Don't worry about what wattage your resistors are rated for, as the voltage they push out is only "seen" by the iDevice and not actually used for charging. The 1A of power comes through the positive and ground wires of the USB.

Step 11: Mounting Drivers

As I said previously, I mounted these way too early. In fact, one of my small drivers got some sawdust in it from cutting the ends of the speaker with the Dremel, and ceased functioning properly. So wait until this point to do so. This process is really simple, just put some silicone on the underside of each speaker's' front plate, (not in the driver, or you'll have big problems), and then press fit them into each hole. You can add screws for aesthetics if you want, but I don't think they are necessary.

Make sure that you have sufficiently long wires attached to each speaker before doing this. Soldering close range like this could end up with a glob of solder inside the drivers.

My design called for a realllly close fit, and you can see that the large driver has very little clearance.

Step 12: Cutting, and Mounting the Grill

There isn't much to this step, as I figured most would either forgo this entirely, or come up with their own files.

I took the .DXF file (included in a previous step), and imported it directly to the plasma CNC at my school. I proceeded to cut it out of approximately 1/8" mild steel.

After cutting, it had some small bits of slag left around the cuts, which I cleaned up with a grinder. After that was done, I put it through a roller, progressively making a steeper curve until it matched the speaker body.

I then spray painted it black, and added a couple coats of clear to protect it, and give it some gloss. When it was dry, I then cut two 1/4" holes at the highest point of the curve, centering them as best I could. The same holes were drilled into the speaker body, and some two inch bolts was what was used for securing the grill.

Step 13: 3D Printing Parts, and Mounting Hardware in Them

I used a Makerbot Replicator + to print these parts. .STL's are in a previous step. 20% infill setting, 3 shells, 1mm layer height.

After printing these, I removed the rafts, and nothing was needed to fit the associated hardware. Slide the push switch into the power switch mount.

With the rear ports, make sure you have wires attached already, long enough to reach the other components in the speaker. And make sure you color code them or something so you remember which one goes where. Then, press each port inside of the 3d printed part, and seal with epoxy or other strong glue.

The most annoying part of this step was getting the switch to fit. It was about a quarter inch too long, so I had to bend the electric terminals so that it would fit above the massive center driver.

Step 14: Electronics

Above I have included a pic of my drawing of how this is wired. It isn't great, but gives you the general idea. This is a very simple circuit when you look at it in pieces, so don't be intimidated. The hardest part of this was getting them all to fit.

You'll notice that there is no over/under-discharge circuit on the batteries. I figured that most modern lithiums have their own internal protection circuits, so an additional external one wasn't really necessary.

In the first picture, it shows the lithium packs I salvaged from the JBL Charge. However, I did end up replacing them with four 18650 cells.

For the step down converter, REMEMBER to adjust the voltage using the small potentiometer, and test that it's outputting 5v before you hook it up to anything. You adjust it by turning the small screw.

Use whatever combination of screws, silicone, glue, or whatever to make everything stay secure. And make sure that when you put the two halves together, that they'll be able to fit without crushing something, or having wires dangling in the seam. Before doing this, however, test that all the electronics are working properly. You will not be able to get the halves apart after the next step.

Step 15: Putting the Two Halves Together

To do this, apply a generous bead of silicone to the inside seam of one of the halves. Carefully tuck wires up inside the body, and stick it together. I would put the bottom on a flat surface, and clamp it until it stays (around 20-30 mins).

After this is done, you can choose to add bolts if you want. They aren't necessary at all, they just look kinda cool. Drill holes in the four corners of the speaker body, and insert the nuts and bolts. After tightening, they should have a little extra poking beyond the nut, so I cut the ends off of the bolts with a Dremel.

It's at this point you can also add the switch mount ring, so go ahead and add silicone to that, and make sure the switch assembly is sealed.

Step 16: Adding the Passive Radiators

I hope you've test fitted the radiators before this point, because if not, it will be difficult to get this to work. Apply a thin bead of silicone around the inside ring of the speaker, and gently push in the radiator. Make sure that only the outermost ring of the radiator gets silicone on it, otherwise it won't function properly. Gently push on the rubber all the way around the circle to make sure silicone fills in any gaps, and makes a good seal. Repeat for the other side.

Step 17: Final Thoughts

And that's it! You're finished. You can still rub off any silicone you dripped places you're not supposed to :)

This project was worth it to me, but if you want a great Bluetooth speaker, just go with the JBL Charge 3. I'm not being paid to talk about it, I just really enjoy having one.

This speaker will last for around 6 hours at 80% volume. It will last much less than that if you charge your phone with it. To operate it, you simply push in the power button. If you are using the same Bluetooth amplifier as me, you should hear a start up tone, and the speaker will be automatically discoverable as XINRUI Audio. If you want to pair another device, you first have to disconnect whatever you currently have paired.

Some quirks...

This speaker was made from some cheap components, so obviously there's gonna be some weird stuff about it.

  • It beeps every time you adjust the volume
  • Bluetooth input is louder that AUX, at least with an iPhone 5s
  • Bluetooth output gets louder when you plug in an aux cord, even if the cord isn't connected at the other end.
  • The charger (step down converter) gets warm when in use, so one of the radiators may feel warmer than the other when charging your phone
  • Distortion at highest volume, with bassy songs. Especially evident with Cancer by twenty one pilots

Other than these anomalies, this is a great speaker, which I prefer over the Charge 3 in any social gathering (due to its bass and volume capabilities).

This is it, please check out my other Instructables (some of which are in the making), for other cool projects.

-Peter, Basement Engineer

Woodworking Contest 2017

Participated in the
Woodworking Contest 2017

Be the First to Share


    • Puzzles Speed Challenge

      Puzzles Speed Challenge
    • CNC Contest 2020

      CNC Contest 2020
    • Secret Compartment Challenge

      Secret Compartment Challenge

    17 Discussions


    2 years ago

    Boombox for Kids....

    Basement Engineer
    Basement Engineer

    2 years ago

    So, I have to admit I made a mistake with the charging system. Because it is 3 cell, the cells got unbalanced and one got over charged. I will be incorporating an update in the next month on the new battery and charging setup.


    3 years ago

    Nice work on the 3d carving, that is not easy!

    You should eliminate the 4th cell and incorporate a proper (3S) BMS board and a fuse. Those cells do not have protection against over discharging.

    Kind of odd to use a 2 channel amp to drive a 2.1 speaker, but I don't know of a 2.1 BT amplifier that will fit in that case.

    Basement Engineer
    Basement Engineer

    Reply 3 years ago

    Yeah, I did end up getting rid of the fourth cell due to unbalanced charging. It doesn't seem to be a huge difference as far as battery life.
    For "undervoltage protection", the amp cuts out under 9 volts. 3 volts per cell is alright with me, I'm not super concerned about longetivity. Thanks for the advice though!


    3 years ago

    This is amazing!

    Basement Engineer
    Basement Engineer

    Reply 3 years ago

    Thanks. I feel lucky to have access to these tools, might as well use them :)


    3 years ago

    I am still blown away that this was all done by a high school student. From concept to completion. Knowing the creator personally, I also know that all of this was self-taught, including the drawing, cutting and printing.


    3 years ago

    Dude, well done! If you want to avoid that scalloping effect in the future, you can reduce the stepover distance. My free CNC Class covers that in Lesson 4if you're interested. That said, I agree- leaving it gives the piece a unique look and indexes the making process, which I'm all for.


    3 years ago

    I know that the be nice policy and I hope I'm not violating it.

    Did you mean for the edges to have that chewed look?

    Basement Engineer
    Basement Engineer

    Reply 3 years ago

    No, that's ok. The big divots on the end are to allow airflow when it stands upright. I cut them with a Dremel, so they're not perfect.


    Reply 3 years ago

    I see and I'm glad no offense was taken. Hard to be perfect with a dremel :) I'm a modeler and machinist and know all too well that 'tweaks' have to be made!


    3 years ago

    Awesome projetc! Congratulations


    3 years ago

    That's a beautiful speaker!!

    Basement Engineer
    Basement Engineer

    Reply 3 years ago

    Thank you, it took a lot of effort ?


    Reply 3 years ago

    Hard work pays off. It looks great!


    3 years ago

    I really like the case design :)