During this week we have learned how to print and solder a PCB to make a Fab ISP. It was my first successful task with soldering electronics I'm really very joyful with this week.
The main task of this week is to build and program a Fab ISP which is an in-system programmer for AVR microcontrollers many versions of these programmers were developed by Fab Labs members over the years.
The first task is to make a PCB Printed Circuit Board which is simply mean to convert designed circuit from a digital format ( PNG photo in our case) into paths drawn on a thin sheet of copper fixed on top of a plastic board. In our Lab we are using milling technic to produce 'Print' PCBs. The small milling machine for this purpose in the lab is Roland SRM-20.
I started with the shown PNG picture of the inner traces of Fab ISP
Then open Fab Modules ( which is an online CAM software that transfer circuits to a code the machine could understand and operate it(. Now on the web page choose input format as .PNG then upload the picture. Then select output format as Roland mill .rml,and change process to be PCB traces (1\64) 'In this operation I will use a 0.4mm tool diameter' The rest important settings means:
speed(mm/s)=4 means how many mm the machine works in a second while milling.
cut depth control the minus Z distance which the machine goes while cutting.
number of offsets controls how many time the machine will turn around each trace.
offset overlap controls the percentage of commone area betwwen two offset traces.
Now Calculate button will find the traces the milling should follow as shown. Then save the file
Open machine's interface software VPanel for SRM-20
Move manually X and Y axes using arrows to your start point then press set orign point to save the zero point.
To set the Z axis origin you should be more careful.
Start by using "L" key to untie little bit the cutting tool and push up it then tie is again as shown:
After that manually down the Z axis using these arrows to be closer to the bed, then untie the tool and let it fall until reach the bed as shown in the figure below this will be the zero of the Z save it by pressing on set orign point. Now to be save lift the Z little bit from the bed.
After that click on Cut icon and choose saved file and press Add then Output. The machine will take some time to reach to the desired speed then it will start working. Monitor the result of engraving if there is a shiny on traces that means the depth of cut must increase. Select Pause decrease Z orign littel bit the restart cut again.
The result board:
Repeat previous steps to do the extirnal cut path on this photo.
Now I want to cut so some settings should change. Depth cut must increase to 1.8mm and speed must decrease to . All settings become :
Now change cutting tool to 0.8 mm, Keep Y and X orign from previous step. change Z orign exactlly as before. then start cut job.
The board after cutting:
The final result of the board before soldering :)
Now I soldered all this components as shown in diagram below:
After solder the board looks like:
Then add a Jumper using solder this jumper will use untill programing then it should be removed.
As a first time it really was a very confusing task, but our great teacher Dima helped us to do it successfully.
First, I downloaded Ubuntu 'Open source operating system from Linux' on a USB drive following This tutorial.
Using Arduino IDE software. Make sure to select your board Arduino/Genuino Uno from tool tab also make sure your board connects to a COM port. Now Open ArduinoISP example, as shown in figure, then press Upload wait untill Done uploading message appear. Now this Arduino will program my board just once, then my board will become a Programmer.
Now plug a USB that has Ubuntu on it, Change computer's disk priority from BIOS to start read from USB not hard disk.
Restart computer, now it's lunch by Ubuntu not Windows. This is my first time here in this new world simple daily task on Windows isn't that simple here just for beginners! Surly the life will become easy again don't worry.
Before start writting commands to program FabISP board I should connect it with arduino Uno which I programmed in previous step using this connection diagram.
Now plug Arduino and FabISP to the computer. )Oh there is no smell I didn' barn any thing ^_^ )
To program my FabISP there is a list of commands should be written on cmd command window. First group of them are to install suitable drivers for AVR Programming. Start by openning cmd Terminal and type:
sudo apt-get install flex byacc bison gcc libusb-dev avrdude
Then type
sudo apt-get install gcc-avr
select Y
when asked
Then write this code
sudo apt-get install avr-libc
Also this
sudo apt-get install libc6-dev
Now use these commands to download the firmware on Desktop and Unzip it
Start with this code to go to Desktop
cd ~/Desktop
To Download type
wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
Unzip file
unzip firmware.zip
To clean object files type
sudo make clean
Then create new files to be a base for program files
sudo make hex
Now open the unzip folder and open Makefile and commenting this line type # before it
#AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE)
Add this line to replace the commenting one
AVRDUDE = avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p $(DEVICE)
After editting the file save it and write this command
sudo make fuse
Then
sudo make program
Finally use this command to list connected USB devices
sudo lsusb
The final result on my screen:
Impossible isn't in our dictionary!
Because of misalignment in machine's plate some places doesn't mill correctly, so there are some traces connect with each other as shown:
To solve this problem I removed them manually using metal ruler :)
The second problem I faced was soldering. In the pastو I tried many times to solder but unfortunately I was very bad. When I start soldering the ATiny44 chip I feel it is very hard to fix it in the correct position when I hardly completed all pins I found that I Flipped The Chip :( I desolder it an resolder it again!!!.
The History of cmd commands
ubuntu@ubuntu:~$ cd Desktop/ ubuntu@ubuntu:~/Desktop$ sudo apt-get install flex byacc bison gcc libusb-dev avrdude Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package byacc E: Unable to locate package avrdude ubuntu@ubuntu:~/Desktop$ sudo apt-get install gcc-avr Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gcc-avr ubuntu@ubuntu:~/Desktop$ sudo apt-get install flex byacc bison gcc libusb-dev avrdude Reading package lists... 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: libbison-dev libfl-dev libftdi1 libsigsegv2 m4 Suggested packages: avrdude-doc bison-doc The following NEW packages will be installed: avrdude bison byacc flex libbison-dev libfl-dev libftdi1 libsigsegv2 libusb-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] y Get:1 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libsigsegv2 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 libfl-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 libbison-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 libftdi1 amd64 0.20-4build1 [15.2 kB] Get:8 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libusb-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 1s (753 kB/s) Selecting previously unselected package libsigsegv2:amd64. (Reading database ... 194399 files and directories currently installed.) Preparing to unpack .../libsigsegv2_2.10-4_amd64.deb ... Unpacking libsigsegv2: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 libfl-dev:amd64. Preparing to unpack .../libfl-dev_2.6.0-11_amd64.deb ... Unpacking libfl-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 libbison-dev:amd64. Preparing to unpack .../libbison-dev_2%3a3.0.4.dfsg-1_amd64.deb ... Unpacking libbison-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 libftdi1:amd64. Preparing to unpack .../libftdi1_0.20-4build1_amd64.deb ... Unpacking libftdi1:amd64 (0.20-4build1) ... Selecting previously unselected package libusb-dev. Preparing to unpack .../libusb-dev_2%3a0.1.12-28_amd64.deb ... Unpacking libusb-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 libc-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 libsigsegv2:amd64 (2.10-4) ... Setting up m4 (1.4.17-5) ... Setting up libfl-dev:amd64 (2.6.0-11) ... Setting up flex (2.6.0-11) ... Setting up libbison-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 libftdi1:amd64 (0.20-4build1) ... Setting up libusb-dev (2:0.1.12-28) ... Setting up avrdude (6.2-5) ... Setting up byacc (20140715-1) ... Processing triggers for libc-bin (2.23-0ubuntu9) ... ubuntu@ubuntu:~/Desktop$ sudo apt-get install gcc-avr Reading package lists... 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-libc 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 12s (1,155 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:~/Desktop$ sudo apt-get install avr-libc Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: avr-libc 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-libc all 1:1.8.0+Atmel3.5.0-1 [4,378 kB] Fetched 4,378 kB in 3s (1,202 kB/s) Selecting previously unselected package avr-libc. (Reading database ... 195450 files and directories currently installed.) Preparing to unpack .../avr-libc_1%3a1.8.0+Atmel3.5.0-1_all.deb ... Unpacking avr-libc (1:1.8.0+Atmel3.5.0-1) ... Processing triggers for man-db (2.7.5-1) ... Setting up avr-libc (1:1.8.0+Atmel3.5.0-1) ... ubuntu@ubuntu:~/Desktop$ sudo apt-get install libc6-dev Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libc-dev-bin libc6 libc6-dbg Suggested packages: glibc-doc The following packages will be upgraded: libc-dev-bin libc6 libc6-dbg libc6-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 libc6-dev amd64 2.23-0ubuntu10 [2,079 kB] Get:2 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libc-dev-bin amd64 2.23-0ubuntu10 [68.7 kB] Get:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libc6-dbg amd64 2.23-0ubuntu10 [3,683 kB] Get:4 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libc6 amd64 2.23-0ubuntu10 [2,580 kB] Fetched 8,411 kB in 4s (1,993 kB/s) Preconfiguring packages ... (Reading database ... 197925 files and directories currently installed.) Preparing to unpack .../libc6-dev_2.23-0ubuntu10_amd64.deb ... Unpacking libc6-dev:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ... Preparing to unpack .../libc-dev-bin_2.23-0ubuntu10_amd64.deb ... Unpacking libc-dev-bin (2.23-0ubuntu10) over (2.23-0ubuntu9) ... Preparing to unpack .../libc6-dbg_2.23-0ubuntu10_amd64.deb ... Unpacking libc6-dbg:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ... Preparing to unpack .../libc6_2.23-0ubuntu10_amd64.deb ... Unpacking libc6:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ... Setting up libc6:amd64 (2.23-0ubuntu10) ... Setting up libc-dev-bin (2.23-0ubuntu10) ... Setting up libc6-dev:amd64 (2.23-0ubuntu10) ... Setting up libc6-dbg:amd64 (2.23-0ubuntu10) ... Processing triggers for libc-bin (2.23-0ubuntu9) ... Processing triggers for man-db (2.7.5-1) ... ubuntu@ubuntu:~/Desktop$ cd ~/Desktop ubuntu@ubuntu:~/Desktop$ wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip --2018-02-19 13:36:55-- 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) [application/zip] Saving to: ‘firmware.zip’ firmware.zip 100%[===================>] 138.41K 267KB/s in 0.5s 2018-02-19 13:36:56 (267 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/CommercialLicense.txt inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._CommercialLicense.txt inflating: fabISP_mac.0.8.2_firmware/usbdrv/License.txt inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._License.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-License.txt inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USBID-License.txt inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbportability.h inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbportability.h ubuntu@ubuntu:~/Desktop$ make clean make: *** No rule to make target 'clean'. Stop. 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.list 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_inline function might not be inlinable [-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:120: recipe for target 'fuse' failed make: *** [fuse] Error 1 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:120: 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 initialized 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$ make program avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U flash:w:main.hex:i avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied avrdude done. Thank you. Makefile:126: recipe for target 'flash' failed make: *** [flash] 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 initialized 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.88s 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 initialized 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$ Isusb No command 'Isusb' found, did you mean: Command 'lsusb' from package 'usbutils' (main) Isusb: command not found ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ lsusb Bus 001 Device 002: ID 8087:8001 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 002 Device 004: ID 13d3:5652 IMC Networks Bus 002 Device 003: ID 8087:07dc Intel Corp. Bus 002 Device 002: ID abcd:1234 Unknown Bus 002 Device 025: ID 1781:0c9f Multiple Vendors USBtiny Bus 002 Device 017: ID 2341:0043 Arduino SA Uno R3 (CDC ACM) Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$