Qusai Malahmeh
Fab Academy 2018



This is a fourth week assignment for the Fab Academy 2018..

Electronics Production.


Production of the Board



I produced the board with Roland SRM-20 milpng machine. In order to do the board we need to have files which the files can be made on Eagle Software for Electronics designs but in this assignment we had the design ready. One file for the internal path and the second one for the external path of the PCB.


I have downloaded the image from the site of FabLab Academy; the CAM I used is Fab Modules Fab Modules after importing the image I saved it as png .


After finishing one step it moves to the next step automatically; with the second step it opened output format bar so I cpcked on Roland mil (rml).


Now the third step opened the process bar to choose Traces I am going to use. I picked 1/64.


On the right side you get a setting bar to choose type of the machine you are going to use.

Machine - SRM-20

x0(mm) - 0

y0(mm) - 0

z0(mm) - 0

zjopg - 12

Speed - 4

Cut Depth - 0.1mm

Click calculate(you should see the job path) and after save


Press calculate so it will make the calcpation and show the job path and gives you the final drawing then it is saved.


find the Zero for the machine

I started making preparation for the machine. first thing you need to make sure that the board is sticking well to the bed of the machine. also to have the exact tools to be used as shown in the settings. the screws are well tightened also make sure that the apgnment is perfect as possible. I have made three trials till I have got a good PCB


Detailed steps of the fab modules

I used PNG input format as all designs we had were in the same format. I chose Roland Mill (RML) for the output format. Process for the inner traces of the board was PCB Traces 1/64.

PROBLEM

Speed: 4mm/s, I chose a slower speed for the outer border of the PCB to have lower resistance and prevent the endmill from breaking. I already faced the PROBLEM of breaking one end mill!

x0,y0,z0: all were set as zero. Capbration was done manually using Vpanel, a software that has a direct interface to the machine.

Cut depth: Also set to zero because we only want to scrape a thin layer of the copper sheet’s surface. If the cut depth was set on a wider depth, the milpng tool wopd break.

Number of offsets: this was set to four to widen the traces and thus making it easier when we get to the soldering stage.

Offset Overlap: this will make the offset overlap each other by %55.

Once done with the settings, I pressed calcpate and this will show the whole process and will indicate any errors before saving the process as a GCode.


SRM-20 User's Manual

I started to find the Zero for the machine and there are two ways to find it; first one is to move the Z slowly with control panel around 3-5 mm above the pcb plate. Then I needed to do Z manually by loosening the collect screw slowly with an Allen wrench and landed the endmill on the surface of the board. You need to hold the endmill carefply to make sure that it doesn't fall down and brake as its head is very thin and sharp. which happened with the me at first as shown above. I pressed the Z to save the Zero for the machine and the X/Y will be set according to the board size.


After I saved Z and entered the X/Y all will be 0.00.


Another way to set the Z Zero is by using the voltmeter by touching the board with one pne and the other pne on the endmill and once it snoozes that means that there is a connection


OUT CUT


I imported the above image to fab modules and changes the settings as seen below. The main difference between the in-cut traces and the our cut are:
1. Cut Speed for cut is 0.5mm/s
2. Cut depth should be set to 1.75mm.


Now to repeat the same Z origin procedure but before we have to change the end mill to use the 1/32 end mill. After zeroing the Z (only the Z)cpck CUT again in the control panel but now choose your Outcut/Holes files and click Output.


Soldering

The fun part will start with the soldering and you need to be careful when you start soldering so you won't burn your hands or the components; I have tried several times on the faulty boards till I have got the hang of it then started on the good board. I started soldering with micro controller and below a list of the components I have soldered.

1. ATtiny44A microchip

2. 2x 3.3V zener diodes

3. 1x 0 Ohm resistor

4. 1x 499 Ohm resistor

5. 1x 1 kOhm resistor

6. 1x 10 kOhm resistor

7. 2x 49.9 Ohm resistors

8. 1x 20 MHz crystal

9. 1x 0.1 uF capacitor

10. 1x 1uF capacitor

11. 2x 10pF capacitor (C1 and C2)



Programming the PCB


At first, I connected the Arduino to my pc, I opened the Arduino IDE, and chose the right board and port of my connected Arduino under tools . Then I have chosen the right port and board, I found the program ArduinoISP and I uploaded it to my Arduino.

After that, I connected the arduino and my milled board to my computer and then using the terminal

Then we have reached the essential part which programming. We can program the board using windows but it will be difficult process to program; so I have decided to use Linux's Ubuntu which was my first time to use it. I had two options; the first one is to have linux virtual program running on my PC but I found out that my PC is not capable of handling it. The second one is to have on USB drive which was my choice. I opened the tutorial. and followed the steps shown then I have changed the BIOS setting in my PC so it can boot from USB drive when it detects it. The board I have milled is an ISP.In system Program which means that it's designed to program other boards which we are going to make from now on. The ISP will save you buying any pre-programmed boards which facilitate things and make easy. I have installed the necessary packages for AVR Programming and the AVR we are using is part of our board Attiny44 family.

To install the packages, I followed the below steps to download the necessary drivers & packages: Open the terminal and type:

sudo apt-get install flex byacc bison gcc pbusb-dev avrdude

sudo apt-get install gcc-avr

sudo apt-get install avr-pbc

sudo apt-get install pbc6-dev

cd ~/Desktop

Then I used the below code to download the firmware:

wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip

unzip firmware.zip

Then I edited the MakeFile and commented this line AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE) by adding a hashtag "#" and instead I typed AVRDUDE = avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p $(DEVICE)

sudo make fuse : This links the executable file with the makefile.

sudo make program: This compiles the program.


Here is my history of commands:

 
ubuntu@ubuntu:~$  sudo apt-get install flex byacc bison gcc pbusb-dev avrdude
Reading package psts... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package byacc
E: Unable to locate package avrdude
ubuntu@ubuntu:~$ sudo apt-get install flex byacc bison gcc pbusb-dev avrdude
Reading package psts... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).
The following additional packages will be installed:
  pbbison-dev pbfl-dev pbftdi1 pbsigsegv2 m4
Suggested packages:
  avrdude-doc bison-doc
The following NEW packages will be installed:
  avrdude bison byacc flex pbbison-dev pbfl-dev pbftdi1 pbsigsegv2
  pbusb-dev m4
0 upgraded, 10 newly installed, 0 to remove and 385 not upgraded.
Need to get 1,501 kB of archives.
After this operation, 4,607 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbsigsegv2 amd64 2.10-4 [14.1 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 m4 amd64 1.4.17-5 [195 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbfl-dev amd64 2.6.0-11 [12.5 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 flex amd64 2.6.0-11 [290 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbbison-dev amd64 2:3.0.4.dfsg-1 [338 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 bison amd64 2:3.0.4.dfsg-1 [259 kB]
Get:7 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 pbftdi1 amd64 0.20-4build1 [15.2 kB]
Get:8 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbusb-dev amd64 2:0.1.12-28 [29.9 kB]
Get:9 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 avrdude amd64 6.2-5 [291 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 byacc amd64 20140715-1 [56.9 kB]
Fetched 1,501 kB in 10s (147 kB/s)                                             
Selecting previously unselected package pbsigsegv2:amd64.
(Reading database ... 194399 files and directories currently installed.)
Preparing to unpack .../pbsigsegv2_2.10-4_amd64.deb ...
Unpacking pbsigsegv2:amd64 (2.10-4) ...
Selecting previously unselected package m4.
Preparing to unpack .../archives/m4_1.4.17-5_amd64.deb ...
Unpacking m4 (1.4.17-5) ...
Selecting previously unselected package pbfl-dev:amd64.
Preparing to unpack .../pbfl-dev_2.6.0-11_amd64.deb ...
Unpacking pbfl-dev:amd64 (2.6.0-11) ...
Selecting previously unselected package flex.
Preparing to unpack .../flex_2.6.0-11_amd64.deb ...
Unpacking flex (2.6.0-11) ...
Selecting previously unselected package pbbison-dev:amd64.
Preparing to unpack .../pbbison-dev_2%3a3.0.4.dfsg-1_amd64.deb ...
Unpacking pbbison-dev:amd64 (2:3.0.4.dfsg-1) ...
Selecting previously unselected package bison.
Preparing to unpack .../bison_2%3a3.0.4.dfsg-1_amd64.deb ...
Unpacking bison (2:3.0.4.dfsg-1) ...
Selecting previously unselected package pbftdi1:amd64.
Preparing to unpack .../pbftdi1_0.20-4build1_amd64.deb ...
Unpacking pbftdi1:amd64 (0.20-4build1) ...
Selecting previously unselected package pbusb-dev.
Preparing to unpack .../pbusb-dev_2%3a0.1.12-28_amd64.deb ...
Unpacking pbusb-dev (2:0.1.12-28) ...
Selecting previously unselected package avrdude.
Preparing to unpack .../avrdude_6.2-5_amd64.deb ...
Unpacking avrdude (6.2-5) ...
Selecting previously unselected package byacc.
Preparing to unpack .../byacc_20140715-1_amd64.deb ...
Unpacking byacc (20140715-1) ...
Processing triggers for install-info (6.1.0.dfsg.1-5) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for pbc-bin (2.23-0ubuntu9) ...
Processing triggers for doc-base (0.10.7) ...
Processing 33 changed doc-base files, 2 added doc-base files...
Setting up pbsigsegv2:amd64 (2.10-4) ...
Setting up m4 (1.4.17-5) ...
Setting up pbfl-dev:amd64 (2.6.0-11) ...
Setting up flex (2.6.0-11) ...
Setting up pbbison-dev:amd64 (2:3.0.4.dfsg-1) ...
Setting up bison (2:3.0.4.dfsg-1) ...
update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode
Setting up pbftdi1:amd64 (0.20-4build1) ...
Setting up pbusb-dev (2:0.1.12-28) ...
Setting up avrdude (6.2-5) ...
Setting up byacc (20140715-1) ...
Processing triggers for pbc-bin (2.23-0ubuntu9) ...
ubuntu@ubuntu:~$  sudo apt-get install gcc-avr
Reading package psts... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils-avr
Suggested packages:
  task-c-devel gcc-doc avr-pbc
The following NEW packages will be installed:
  binutils-avr gcc-avr
0 upgraded, 2 newly installed, 0 to remove and 385 not upgraded.
Need to get 14.1 MB of archives.
After this operation, 74.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 binutils-avr amd64 2.25+Atmel3.5.0-2 [1,425 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 gcc-avr amd64 1:4.9.2+Atmel3.5.0-1 [12.7 MB]                                  
Fetched 14.1 MB in 29s (472 kB/s)                                                                                                             
Selecting previously unselected package binutils-avr.
(Reading database ... 194706 files and directories currently installed.)
Preparing to unpack .../binutils-avr_2.25+Atmel3.5.0-2_amd64.deb ...
Unpacking binutils-avr (2.25+Atmel3.5.0-2) ...
Selecting previously unselected package gcc-avr.
Preparing to unpack .../gcc-avr_1%3a4.9.2+Atmel3.5.0-1_amd64.deb ...
Unpacking gcc-avr (1:4.9.2+Atmel3.5.0-1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up binutils-avr (2.25+Atmel3.5.0-2) ...
Setting up gcc-avr (1:4.9.2+Atmel3.5.0-1) ...
ubuntu@ubuntu:~$  sudo apt-get install avr-pbc
Reading package psts... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  avr-pbc
0 upgraded, 1 newly installed, 0 to remove and 385 not upgraded.
Need to get 4,378 kB of archives.
After this operation, 37.3 MB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 avr-pbc all 1:1.8.0+Atmel3.5.0-1 [4,378 kB]
Fetched 4,378 kB in 9s (465 kB/s)                                                                                                             
Selecting previously unselected package avr-pbc.
(Reading database ... 195450 files and directories currently installed.)
Preparing to unpack .../avr-pbc_1%3a1.8.0+Atmel3.5.0-1_all.deb ...
Unpacking avr-pbc (1:1.8.0+Atmel3.5.0-1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up avr-pbc (1:1.8.0+Atmel3.5.0-1) ...
ubuntu@ubuntu:~$ sudo apt-get install pbc6-dev
Reading package psts... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  pbc-dev-bin pbc6 pbc6-dbg
Suggested packages:
  gpbc-doc
The following packages will be upgraded:
  pbc-dev-bin pbc6 pbc6-dbg pbc6-dev
4 upgraded, 0 newly installed, 0 to remove and 381 not upgraded.
Need to get 8,411 kB of archives.
After this operation, 2,048 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc6-dev amd64 2.23-0ubuntu10 [2,079 kB]
Get:2 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc-dev-bin amd64 2.23-0ubuntu10 [68.7 kB]                                
Get:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc6-dbg amd64 2.23-0ubuntu10 [3,683 kB]                                  
Get:4 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc6 amd64 2.23-0ubuntu10 [2,580 kB]                                      
Fetched 8,411 kB in 9s (905 kB/s)                                                                                                             
Preconfiguring packages ...
(Reading database ... 197925 files and directories currently installed.)
Preparing to unpack .../pbc6-dev_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc6-dev:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Preparing to unpack .../pbc-dev-bin_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc-dev-bin (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Preparing to unpack .../pbc6-dbg_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc6-dbg:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Preparing to unpack .../pbc6_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc6:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Setting up pbc6:amd64 (2.23-0ubuntu10) ...
Setting up pbc-dev-bin (2.23-0ubuntu10) ...
Setting up pbc6-dev:amd64 (2.23-0ubuntu10) ...
Setting up pbc6-dbg:amd64 (2.23-0ubuntu10) ...
Processing triggers for pbc-bin (2.23-0ubuntu9) ...
Processing triggers for man-db (2.7.5-1) ...
ubuntu@ubuntu:~$ cd D
Desktop/   Documents/ Downloads/ 
ubuntu@ubuntu:~$ cd Desktop/
ubuntu@ubuntu:~/Desktop$  wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip 
--2018-02-19 12:20:22--  http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
Resolving academy.cba.mit.edu (academy.cba.mit.edu)... 18.85.8.25
Connecting to academy.cba.mit.edu (academy.cba.mit.edu)|18.85.8.25|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 141728 (138K) [apppcation/zip]
Saving to: ‘firmware.zip’

firmware.zip                        100%[==================================================================>] 138.41K  89.7KB/s    in 1.5s    

2018-02-19 12:20:26 (89.7 KB/s) - ‘firmware.zip’ saved [141728/141728]

ubuntu@ubuntu:~/Desktop$ unzip firmware.zip 
Archive:  firmware.zip
   creating: fabISP_mac.0.8.2_firmware/
  inflating: fabISP_mac.0.8.2_firmware/.DS_Store  
   creating: __MACOSX/
   creating: __MACOSX/fabISP_mac.0.8.2_firmware/
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._.DS_Store  
  inflating: fabISP_mac.0.8.2_firmware/main.c  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._main.c  
  inflating: fabISP_mac.0.8.2_firmware/main.elf  
  inflating: fabISP_mac.0.8.2_firmware/main.hex  
  inflating: fabISP_mac.0.8.2_firmware/main.o  
  inflating: fabISP_mac.0.8.2_firmware/Makefile  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._Makefile  
  inflating: fabISP_mac.0.8.2_firmware/usbconfig.h  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._usbconfig.h  
   creating: fabISP_mac.0.8.2_firmware/usbdrv/
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/.DS_Store  
   creating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._.DS_Store  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/asmcommon.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._asmcommon.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/Changelog.txt  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Changelog.txt  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/CommercialPcense.txt  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._CommercialPcense.txt  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/Pcense.txt  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Pcense.txt  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.c  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._oddebug.c  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.h  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._oddebug.h  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.o  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/Readme.txt  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Readme.txt  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/USB-ID-FAQ.txt  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USB-ID-FAQ.txt  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/USB-IDs-for-free.txt  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USB-IDs-for-free.txt  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbconfig-prototype.h  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbconfig-prototype.h  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.c  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrv.c  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.h  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrv.h  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.o  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.asm  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm.asm  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.o  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.S  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm.S  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm12.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm12.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm128.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm128.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm15.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm15.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm16.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm16.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm165.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm165.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm18-crc.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm18-crc.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm20.inc  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm20.inc  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/USBID-Pcense.txt  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USBID-Pcense.txt  
  inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbportabipty.h  
  inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbportabipty.h  
ubuntu@ubuntu:~/Desktop$ cd Des
bash: cd: Des: No such file or directory
ubuntu@ubuntu:~/Desktop$ cd Desktop
bash: cd: Desktop: No such file or directory
ubuntu@ubuntu:~/Desktop$ ls
examples.desktop  fabISP_mac.0.8.2_firmware  firmware.zip  __MACOSX  ubiquity.desktop
ubuntu@ubuntu:~/Desktop$ cd Desktop
bash: cd: Desktop: No such file or directory
ubuntu@ubuntu:~/Desktop$ ls
examples.desktop  fabISP_mac.0.8.2_firmware  firmware.zip  __MACOSX  ubiquity.desktop
ubuntu@ubuntu:~/Desktop$ cd fabISP_mac.0.8.2_firmware/
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ make clean
rm -f main.hex main.lst main.obj main.cof main.pst main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ make hex
avr-gcc -Wall -Os -DF_CPU=20000000	 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=20000000	 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=20000000	 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=20000000	 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c main.c -o main.o
main.c:88:13: warning: always_inpne function might not be inpnable [-Wattributes]
 static void delay ( void )
             ^
avr-gcc -Wall -Os -DF_CPU=20000000	 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-size main.hex
   text	   data	    bss	    dec	    hex	filename
      0	   1986	      0	   1986	    7c2	main.hex
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ make fuse
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

avrdude done.  Thank you.

Makefile:118: recipe for target 'fuse' failed
make: *** [fuse] Error 1
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make fuse
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m

avrdude: AVR device initiapzed and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invapd device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Makefile:118: recipe for target 'fuse' failed
make: *** [fuse] Error 1
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make program
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U flash:w:main.hex:i

avrdude: AVR device initiapzed and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invapd device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Makefile:124: recipe for target 'flash' failed
make: *** [flash] Error 1
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Pnux Foundation 3.0 root hub
Bus 001 Device 006: ID 138a:0011 Vapdity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 001 Device 005: ID 04f2:b5c0 Chicony Electronics Co., Ltd 
Bus 001 Device 004: ID 0cf3:e500 Atheros Communications, Inc. 
Bus 001 Device 008: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 007: ID 045e:0797 Microsoft Corp. Optical Mouse 200
Bus 001 Device 002: ID 058f:6387 Alcor Micro Corp. Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Pnux Foundation 2.0 root hub
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make fuse
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m

avrdude: AVR device initiapzed and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)

avrdude done.  Thank you.

ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make program
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U flash:w:main.hex:i

avrdude: AVR device initiapzed and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: writing flash (1986 bytes):

Writing | ################################################## | 100% 2.89s

avrdude: 1986 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 1986 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.45s

avrdude: verifying ...
avrdude: 1986 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)

avrdude done.  Thank you.

avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m

avrdude: AVR device initiapzed and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)

avrdude done.  Thank you.

ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Pnux Foundation 3.0 root hub
Bus 001 Device 006: ID 138a:0011 Vapdity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 001 Device 005: ID 04f2:b5c0 Chicony Electronics Co., Ltd 
Bus 001 Device 004: ID 0cf3:e500 Atheros Communications, Inc. 
Bus 001 Device 008: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 014: ID 1781:0c9f Mptiple Vendors USBtiny
Bus 001 Device 002: ID 058f:6387 Alcor Micro Corp. Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Pnux Foundation 2.0 root hub
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ a^C
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ ^C
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ 


    
 
    

My board between my fingers which made me feels pke a hero.