arduino-compare-back

How to make Arduino (Dofly) work

Arudino is an opensource prototyping hardware platform and you could get numbers of different version of Arduino out in the market. I have used couple of those “clone” Arduino before just because they are usually cheaper and works pretty much the same as the “genuine” Arduino.

Recently, I got an counterfeit board from eBay. It was shipped from ShenZhen, China. The eBay post listed with genuine Arduino pictures but I realized it was not the same thing when I received it. I included the compare photos side by side with the Arduino I got from Sparkfun.

arduino-compare-frongarduino-compare-back

The board has a website “www.doflye.net” at the back and it’s called Arduino Uno Improved Version in Chinese.

When I connected the board to Arduino IDE on my Mac, it won’t recognized the board at all. I first tried to browser the website printed at the back, but nothing really helps in that Chinese forum. After some research, here are the solution to make it work (at least on Windows and Ubuntu):

1. Make it detectable to the Arduino IDE

Seems like the “Arduino” board uses different USB-Serial chip than the original Arduino. Your OS must have CH341 USB to Serial Driver installed to be able to connect this board.

At this moment, I am not able to find any suitable driver for Mac OS X. For Windows, I believe you can download this file, CH341SER and install. For Ubuntu, I did not install any special driver. It just works for Linux I guess.

2. Configurate the board file for Arduino IDE

OK, so you can see the board in Arduino IDE, but you will soon find that you are not able to upload the program to the board.  You have to edit the Arduino’s board file.

Find the boards.text. For Mac OS X, you can find it at

Applications -> Arduino (Right click and enter into Show Package Contents) -> Resources -> Java -> Hardware -> Arduino

Append the following lines to the end of boards.txt

##############################################################

opti8.name=Arduino Optiboot8
opti8.upload.protocol=arduino
opti8.upload.maximum_size=7680
opti8.upload.speed=115200
opti8.bootloader.low_fuses=0xbf
opti8.bootloader.high_fuses=0xcc
opti8.bootloader.path=optiboot
opti8.bootloader.file=optiboot_atmega8.hex
opti8.bootloader.unlock_bits=0x3F
opti8.bootloader.lock_bits=0x0F
opti8.build.mcu=atmega8
opti8.build.f_cpu=16000000L
opti8.build.core=arduino
opti8.build.variant=standard

(Thanks to Peter who pointed out the error in the comment!)

Or you can download this file and replaced the original one: Arduino boards file

Now you should be able to work with this fake Arduino. I must say it’s not impressive at all. However if you happened to have it, a working one is better than one more piece of garbage.

14 Comments

  1. Hi, many tanks for your blog about Arduino-COMPATIBLE. Arduino is my hobby. I have 1 board Arduino1 R3 made in Italy and 1 ethernet shield compatible. Arduino and Shield works. 1 month ago I bought a board arduino compatible from china (doflye). I change the atmega with atmega328 ant it works, but not works if i couple it with ethernet shield. Have you any idea? What the function of two button on board compatible KEY_L and KEY_H? Many thanks

  2. Thanks a lot for the advice!
    I got the serial port running (device was not recognized before, but the new driver is right).

    With your change of boards.txt: Why have you changed used the Arduino Robot Motor instead of a new device name?
    I’m using Win7 an copied your boards.txt. But I still get an error, that the chosen device is wrong. The message during upload:

    Connecting to programmer: .avrdude: Send: . [1b]
    avrdude: Send: S [53]
    avrdude: Recv:

    avrdude: Recv:
    avrdude: Send: V [56]
    avrdude: Recv:
    avrdude: Send: v [76]
    avrdude: Recv:
    avrdude: Recv:
    avrdude: Send: p [70]
    avrdude: Recv:
    Found programmer: Id = “Ÿÿ””; type = E
    Software Version = E.

    Thanks a lot,
    Peter

  3. Sorry, I haven’t copied interesting part of the log:
    Found programmer: Id = “ÿ””; type = Õ
    Software Version = E; Hardware Version = (sigma).
    avrdude: Send: a [61]
    avrdude: Recv:
    avrdude: Send: b [62]
    avrdude: Recv:
    avrdude: error: buffered memory access not supported. Maybe it isn’t a butterfly/AVR109 but a AVR910 device?

    ###end

  4. It’s me again… This time I got it!
    I found a working entry for the boards.txt here:
    http://hamadata.tumblr.com/post/70187617223/arduino-compatible-hacking-in-ebay

    opti8.name=Arduino Optiboot8
    opti8.upload.protocol=arduino
    opti8.upload.maximum_size=7680
    opti8.upload.speed=115200
    opti8.bootloader.low_fuses=0xbf
    opti8.bootloader.high_fuses=0xcc
    opti8.bootloader.path=optiboot
    opti8.bootloader.file=optiboot_atmega8.hex
    opti8.bootloader.unlock_bits=0x3F
    opti8.bootloader.lock_bits=0x0F
    opti8.build.mcu=atmega8
    opti8.build.f_cpu=16000000L
    opti8.build.core=arduino
    opti8.build.variant=standard

  5. Hello there,pardon me I may,it is my fist time to actually work with arduino,just where exactly is this boards.text file ,im working with windows 7,i can not find such file anywhere on the pc.I have 0023 IDE version. Please help.

  6. On Fedora 20 – arduino 1.0.5 the new board does not appear in the list unless you delete about 10 boards first!!
    One workaround is to use the “Arduino NG or older w/ ATmega8″ board after you change the “atmega8.upload.speed” from 19200 to 115200 in boards.txt.

  7. Another tip then…
    The board was advertised on ebay as “New Arduino UNO R3 ATMega328P+ATMega16U2 Development Board” sold for AU $10.59.
    As you know the chip on the board is an ATMega8A. Since I was scammed I requested a refund and seller propose to refund 5 AUD.

    Not really a technical tip but more of a business plan tip…. ;)

  8. Hi,

    many thanks for reply, but I have not tried yet. i try this method next week (I will tell you if it works). At this moment i try to connect two arduino clone (dofly.net)with nrf24l01+ wireless transceiver, but it no works. Pin on clone (D8, D9, D10, etc) are the same on arduino made in Italy?

    thanks

  9. I have this error after add to boards.txt:

    In file included from D:\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp:32:
    D:\Arduino\hardware\arduino\avr\cores\arduino\/HardwareSerial_private.h: In member function ‘void HardwareSerial::_rx_complete_irq()’:
    D:\Arduino\hardware\arduino\avr\cores\arduino\/HardwareSerial_private.h:98: error: ‘UPE’ was not declared in this scope

    And where is a file: “opti8.bootloader.file=optiboot_atmega8.hex”?

Leave a Reply