Our local instructor this week, Jari Pakarinen, guided us through the process of generating the necessary rml files, load them to the milling machine, prepare the machine and do the actual milling. We, after that, just needed to repeat the process with the board we chose. He later gave also some tips for soldering too. After Jari's instruction, some of us decided to stay to start also the group work, which is described in the group work page.

To Do

  1. PCB Fabrication.
  2. PCB Programming.
  3. Group work

The "Doing"

Create a PCB board

This week we need to fabricate a programmer board. We do not have to design it, but mill it and solder it. We had to decide from a selection of designs from Neil's lecture page. I decided to choose the one from Brian. For me, his instructions are very clear and well structured. Also, the name is in bold in the list. And finally, some of the students from Oulu last year also chose this one, and were happy. So, the next steps were:
  • Download design files (png)
  • Generate the milling files (rml)
  • Prepare the milling machine (Roland SRM-20)
  • Mill the board
  • Prepare for soldering
  • Soldering
  • Check everything is ok

Generate the milling files

I downloaded the design files from Brian's page, the one containing the traces and the one containing the outline.
Then, using the fabmodules I generated the corresponding rml files.
Steps for the traces:

  • In menu on top
  • Input format: image (.png) ; and choose the png file for your traces
  • Output format: Roland mill (.rml)
  • Process: traces 1/64

  • In menu on right
  • machine: SRM-20
  • offset (x0, y0, z0): 0
  • cut depth (mm): 0.14
  • Press calculate
  • Once done, press save to download the file
Traces settings
Traces png and settings in fabmodules

The rml file obtained: Traces settings
The .rml file for traces and settings
Steps for the outline:
  • In menu on top
  • Input format: image (.png) ; and choose the png file for your outline
  • Output format: Roland mill (.rml)
  • Process: outline 1/32

  • In menu on right
  • machine: SRM-20
  • offset (x0, y0, z0): 0
  • tool diameter (mm): 1
  • Press calculate
  • Once done, press save to download the file
Outline settings
Outline png and settings in fabmodules

The rml file obtained: Outline settings
The .rml file for outline and settings
Things you can check:
  • The size from both files (top right corner) is equal
  • The size is what is expected

Mill the board

  1. The tasks to PREPARE THE MILLING MACHINE are:

    1. Open Vpanel application in the assignated computer
    2. Switch on machine
    3. Open machine and extract the bottom plate
    4. Check sacrifial board is leveled (not done by us)
    5. Stick the board to the sacrificial board with doubled sided tape
    6. Back in place and hold well
    1. vpanel view
    Switch on
    2. switch on the machine
    5. Prepare the board to be stuck to the sacrificial board
    6. Screws that hold the plate on the base of the machine

  2. Prepare the TOOLS

  3. v shape
    1. V Shape bit for milling
    v shape cut
    2. Bit for cutting
    3. Hexagonal allen
    4. Spatula
    1. V Shape bit.
      • this is the bit we will use for milling the traces
      • It's diameter goes from 0,2mm to 0,5mm, being the part we work with of around 0,4mm
    2. Bit for cutting.
      • this is the bit we will use for cutting the outline of the board
      • it has a diameter of 1mm
    3. Hexagonal allen
      • We use this allen to screw / unscrew the bit from the head
    4. Spatula
      • We will use the spatula to extract the board, once finished, from the big piece of board

  5. We need to first understand the front panel of the application V-Panel for SRM-20.
    VPanel description
    VPanel Front panel description
    We will be first doing the traces and then, cutting. So the process would be:
    • Put the bit for the traces
    • Set the origo
    • Trace, using the traces file
    • Put the bit for the outline
    • Set the origo
    • Cut, using the outline file
    The steps to set the origo for one bit are:
    1. If you need to change the bit then:
      • With the lid closed, press View on the Vpanel to put the head close to the front part
      • Open the lid, and unscreew the bit enough you can remove it from the head. It is better to hold it with a couple of fingers.
      • Put the new bit and screw it in
    2. Setting X, Y
      • If you are changing from milling bit to cutting bit, you should not change the XY, or you would not cut on the expected place
        • You can put it back to the XY origo if necessary by pressing the button indicated in the picture above
      • If you need to set the X, Y
        • Press the XY cursors to move the header to the desired X,Y position. This can be done with speed > continuous
        • When the header is in the correct X,Y position, set the X,Y origo by pressing the corresponding button in the panel
    3. Setting Z
      • Press the Z cursor to lower it as much as possible without touching the surface. In this case use speed > x100 and reduce it to speed > x10 or even speed > x1 if needed. It is important not to touch the surface, because the bit could break.
      • Open the lid, hold the bit with one hand while unscrewing the bit slightly. Help the bit to fell until it touches the surface.
      • Holding it still, tighten again the bit to the head.
      • Close the lid, and set the Z origo by pressing the corresponding button.
      • Move the head up a bit with the Z cursor
        • This is because Jari had once a bad experience with the head not doing that when preparing to cut
    Now, the origo is set. Finally we can choose the file. Press Cut in the vPanel, and a new menu is prompted:
    • Press Delete All to remove all files in the list
    • Choose the file (First, the traces; Secondly, the outline)
    • Press Output
    tracing origo
    Origo for bit for tracing
    v shape cut
    v shape cut
    Origo for bit for outlining
    Vacuum clean the result
    Extract with an spatula

    There are still a couple of things to do:
    • Remove extra copper. As this is meant to connect to the computers' USB port, it is better to remove the extra copper from the tip
    • clean
      Use a knife or cutter to remove extra copper
    • Scrub upper coatingThe boards used are FR1. They have an extra coating that needs to be rubbed away because it makes soldering quite challenging
    • clean
      Before scrubbing
      Final result.
      It can be easily appreciated in the last picture the difference of colour between the original board and the brushed one.
Things that can go wrong
  • The board is not traced correctly, with some parts traced or semitraced and others where the copper remains almost completely in the traces. This is most probably due to having the sacrificial board uneven, so the actual board does not have the same Z position in all its surface bad tracing
    Example of not leveled sacrificial board
  • If you do not see enough "dust" coming from the bit, then most probably it is not milling. Or something is wrong (for example, the bit is not screwed tight enough), or the cut depth is not enough.


I checked from Brian's page the list of components needed:
  • 1x ATtiny45 or ATtiny85
  • 2x 1kΩ resistors
  • 2x 499Ω resistors
  • 2x 49Ω resistors
  • 2x 3.3v zener diodes
  • 1x red LED
  • 1x green LED
  • 1x 100nF capacitor
  • 1x 2x3 pin header
I then used Iván's way of organizing the components, by sticking them to a tape, close to their description. components and names
Components needed with their corresponding description..
To Know where to solder the different parts on the PCB, we had to use the schematic and board shown bellow (from Brian's page )
Board image showing components exact placement
Schematic showing components placement and value

Taking into account the information in the last images, I completed the list with the components' names given in those images: components, names and places
Components needed with their corresponding description and placement

Then, I prepared the soldering place:
Switch on the ventilation
Soldering station, lead-free solder, desoldering braid

The plan for the board was:
  • start with the chip (just because I thought it was harder)
  • then, go from right to left soldering

Switch on the soldering station, and wet a bit the sponge on the base.

Then, I followed these steps to solder one component are:
  • put a bit of solder in the pad of one of the sides/legs to hold the component
  • position the component over it and heat the solder with the iron tip so it melts enough to hold the component
  • proceed to solder the other side/legs of the component
    • if the component has several legs, you may start from one corner, and then continue with the opposite corner; and then with a leg on the other side. This way, the heat is better dissipated.
  • Soldering properly the first side/leg, that is, resolder the first pad that was holding the component
bit of solder
Bit of solder
one leg
One leg
two legs
Two legs.
I decided to start with the chip, because I thought it would be the most difficult (and if I really messed it up, I could go back to the milling process fast). Then, I continued soldering the rest of the components.

All the components placed!!

Things that can go wrong
  • There are some components that require certain orientation in the circuit. That is the case of the LEDs and the Zener. Check the marks!!
  • shortcircuits, that is, solder that joins two different paths: use the desoldering braid to remove the solder
  • components bad positioned: use the desoldering braid to remove the solder
How to use the desoldering braid
  • Put the thread over the solder to remove
  • Press with the soldering tip until the heat melts the solder
  • Pull the tape fast, and the solder gets stuck to it

Optional: Programming the board

For this I have:

I first tried to do this in Linux (Brian's and Iván's recommendation). I have a windows 10, and I was not willing (yet) to make a new partition or going for a VM, so when Neil show the Windows Subsystem for Linux I was quite happy. I installed an Ubuntu in my laptop and started to follow Brian's instructions. Everything was going quite smoothly... But! It turns out my recently installed WSL does not recognize the USB. So back to the starting point.

I then followed Brian's instructions for Windows. Summarizing:

  • Install all the needed software (with screen shots at Brian's instructions)
    • Install Atmel AVR Toolchain for Windows
    • Install GNU Make
    • Download avrdude and unzip it to c:/Program Files
    • Add to Path ( Advanced System Settings > Environment Variables > User varianles> Path > Edit ) the values:
      • C:\Program Files\avr8-gnu-toolchain\bin
      • C:\Program Files (x86)\GnuWin32\bin
      • C:\Program Files\avrdude
    • Install drivers for the programmer:
      • Download Zadig and launch it
      • Plug in your programmer, and select the "USBtinySPI" device in the list
      • Select the driver: either libusb-win32 or libusb0
  • Get and Build the Firmware
    • Got fts_firmware_bdm_v1.zip from Brian's and unzipped it
    • Run
  • Program the ATtiny45
    • plug my board into a USB and Connect the programmer to the ISP header on my board
      make fuses
      My board connected to programming board
      make fuses
      My board connected to programming board and computer
    • Run
      make flash
      make flash
      Result when make flash
    • Run
      make fuses
      make fuses
      Result when make fuses
  • Test the USB Functionality
    • In Windows, check if you can see it with the device manager device manager
      Look for your programmer in the device manager
  • Blow the Reset Fuse
    • Run
      make rstdisbl
      make rstdisbl
      Result when make rstdisbl
    • Remove the bridge on the solder jumper
      removing the bridge
      Removing the bridge of the solder jumper
      no bridge
      Bridge removed
I found three issues:
  • First, the download link for the AVR toolchain has changed to here
  • Second, I had (of course) some issues when installing, being necessary to install everything as administrator (my fault, did not even think about that). I had all the time problems with the driver for the programmer (I had to replace the driver all the time with Zadig) and I guess it is also because I did not install Zadig as administrator.
  • In the last two steps, that is, Blow the Reset Fuse, I got all the time an error. When I tried
    make rstdisbl
    I got the following make rstdisbl
    Error when make rstdisbl
    And this time reasigning the correct driver through Zadig did not work. Iván then had the idea of pluggin his programmer to my laptop and mine to his. And this way, it worked


Once done


  • I have learnt to use fabmodules to get the paths for the traces and the outline of a board design
  • I have learnt to prepare the milling machine and fabricate the board
  • I have soldered all the different components to the PCB I have fabricated
  • I have programmed my programmer
  • We had some team work to characterize the Milling Machine in FabLab Oulu. The results are summarized here


  • Can you see the line on this component? Me neither! Positioning the zener in the correct alignment is quite a task. It is difficult to guess which part is the catode zenner
    Can you see the line?
  • Although Brian instructions for programming are very clear, I had some issues with my laptop recognizing there was something in the USB port.


  • When it is said "slightly tight the bit to the header", it means tight it well.


  • Try to avoid the thin tips in the soldering machines! I found them more difficult to handle, as it takes longer to heat the solder with them
  • Check some Things that can go wrong milling and soldering
  • Remember to launch Zadig!