Can't program UNO with Xbee

by Captapollo on Mon Oct 15, 2012 1:41 am

Hi Adafruit,

I recently purchased the Tweet a watt starter pack to begin playing with Xbee communication. My goal is to be able to program a Rainbowduino wirelessly (I know, not your product :) ) but all my other Arduino products I purchased from Adafruit.

Anyway, to start I thought I would verify that the Xbee's were working properly by following your "how to make a simple wireless bridge with xbees" tutorial http://www.ladyada.net/make/xbee/point2point.html using my UNO board that I got from you in a starter kit along with the above mentioned Tweet a watt pack and all went perfect! :D

So I then redid things by following your "XBee - remote arduino programming" http://www.ladyada.net/make/xbee/arduino.html tutorial. I have attached a file that shows my current wiring. Both the green led's on the Xbee's are flashing, only the red led on the receiver Xbee is lit solid, and the "L" led on the UNO is lit.

When I try to upload a program (the Blink example, have tried others though) from the Arduino IDE version 1.0.1, Windows 7 64 bit, brand new Dell XPS computer, I get the following error

Binary sketch size: 1,084 bytes (of a 30,720 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00

If I hold the shift key down when I click the upload button I get

Binary sketch size: 1,084 bytes (of a 30,720 byte maximum)
avrdude: usbdev_open(): did not find any USB device "usb"

I know my UNO is OK because I can hook it up via the USB cable and I can upload programs to it and they work fine.

I have gone into Device manager and set the speed of the FTDI COM port to 57600 and both the Xbee's are configured for 57600. I have also tried 115200, 19200, and 9600 baud on all 3. I have also set the "set RTS on close" option in device manager. When I try to upload, the UNO does reset, the "L" led on the board blinks 3 times, but I never see the TX or RX led's blink.

I have chosen the correct port and the Arduino UNO board in the IDE.

I have done lots of searching the net this weekend and the only thing I could find that matched my setup says this can't be done with an UNO, but there was no explanation why.

I can't think of anything else to tell you right now that may help so I hope you can help me.

Thank you very much in advance, John.
Attachments
IMG_0082.JPG
Arduino wireless programming hookup
IMG_0082.JPG (244.41 KiB) Viewed 1570 times
Captapollo
 
Posts: 6
Joined: Mon Mar 05, 2012 11:32 am

Re: Can't program UNO with Xbee

by adafruit_support_bill on Mon Oct 15, 2012 5:53 am

I haven't tried it myself, but I have heard that you can make it work on an UNO if you swap in a Duemilanove bootloader.
User avatar
adafruit_support_bill
 
Posts: 25556
Joined: Sat Feb 07, 2009 9:11 am

Re: Can't program UNO with Xbee

by Captapollo on Mon Oct 15, 2012 12:19 pm

OK, thanks for the fast reply.

So you have to guess what my next question is . . . how the heck do I do that?

I did a little Googleing and I read about "bit banging" it in because I don't have an external AVR writer (I think that is what I would need) but both articles said that it can't be done with an UNO board. Do you have instructions that you can provide me or give me a link to? Do you sell an AVR writer?

Thank you, John.
Captapollo
 
Posts: 6
Joined: Mon Mar 05, 2012 11:32 am

Re: Can't program UNO with Xbee

by adafruit_support_bill on Mon Oct 15, 2012 12:35 pm

The easiest way is to just swap the Atmega chip. If you have a Duemilanove you can use the one from that. Or we have pre-programmed chips here: http://www.adafruit.com/products/123

Other options are to use a USBTinyISP.http://www.adafruit.com/products/46

One thing to be aware of: As far as the IDE is concerned, the Board Type is determined by the bootloader - not the name printed on the board. If you put a Duemilanove bootloader on your UNO, you must select Duemilanove as the Board Type when uploading.
User avatar
adafruit_support_bill
 
Posts: 25556
Joined: Sat Feb 07, 2009 9:11 am

Re: Can't program UNO with Xbee

by Captapollo on Tue Oct 16, 2012 11:10 am

Thank you again. I have ordered 3 of the chips you suggested and I will order the programmer when they are back in stock.

I don't mind throwing money at a problem to solve it, but this won't actually solve it, it will just prove that it works and then I will try to reprogram my other device. What I would like to request is that Adafruit test this with newer hardware and figure out why it won't work, or make it work and publish the solution. At the very least, posting on the tutorial site that this does not work with the Uno's would be a help to all of us. I wish I had the time to learn all about the AVR's and figure out for myself, but I don't.

I will be sure to update this forum with my progress.

Thanks again, John.
Captapollo
 
Posts: 6
Joined: Mon Mar 05, 2012 11:32 am

Re: Can't program UNO with Xbee

by Captapollo on Sun Oct 21, 2012 10:38 am

Hi Support,

Before I forget, the following page "http://www.ladyada.net/library/arduino/arduinoisp.html" is not working anymore. It was a few days ago. There is a link to it on "http://ladyada.net/library/tools/standaloneisp.html" as well as the sidebar or two that I have seen on your sites.

I got the chips you suggested I order in the mail yesterday. I put one in my Uno, hooked everything up to program it wirelessly, but when I went to select the board there was no Duemilanove with a 328 listed so I tried "Arduino Diecimila or Duemilanove w/ ATmega168" and that didn't work. I looked at the list of boards and FTDI jumped out at me! I thought possibly since I was using an FTDI cable from Adafruit it would work so I tried it and it worked on the first try! I had loaded Blink wirelessly! I then change the flash rate for the LED and uploaded it and it worked again!

Then I got to thinking if FTDI worked for the Duemilanove maybe it would work for the Optiboot in the Uno so I swapped the Uno chip back in, but no luck.

I wish to pursue my project further but don't know where to look. I have looked but can't find who wrote the Duemilanove bootloader. I know the new one is Optiboot. There has to be some difference between them that is preventing the wireless upload from working on the newer bootloader and someone has to be able to figure it out. Being able to upload code wirelessly is such a fantastic feature I can't believe there is not more about it on the internet. I have also read that there is an Adafruit bootloader.

At this point I am probably done with the help that you can provide unless you have any more information on the different bootloaders. I can't exactly swap out the chip in my Rainbowduino so I will have to ask Seeedstudio about changing its bootloader and seeing if that will work.

Thank you for any help you can give me.

The following may go beyond the scope of Adafruit support but it can't hurt to ask :D any suggestion would be appreciated.

This morning I have found another mystery. I wanted to copy the name of the board I had chosen for this post so I opened boards.txt to copy this "Arduino Diecimila or Duemilanove w/ ATmega168" from it and I discover that the second board listed in boards.txt is "Arduino Duemilanove w/ ATmega328". How could I have missed that yesterday. So I opened my Arduino IDE, version 1.0.1 and have triple checked and it does not show in the list. Here is a screen capture of the list that shows in my IDE. I included the edges so you can see the entire window is there. It doesn't scroll and I have plenty of screen real estate for it to display the entire list.
boards.jpg
boards.jpg (72.5 KiB) Viewed 1464 times

I am going to try to include my boards.txt file also.
Code: Select all
# See: http://code.google.com/p/arduino/wiki/Platforms

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

uno.name=Arduino Uno
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.speed=115200uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
uno.build.variant=standard

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

atmega328.name=Arduino Duemilanove w/ ATmega328

atmega328.upload.protocol=arduino
atmega328.upload.maximum_size=30720
atmega328.upload.speed=57600

atmega328.bootloader.low_fuses=0xFF
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05
atmega328.bootloader.path=atmega
atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0F

atmega328.build.mcu=atmega328p
atmega328.build.f_cpu=16000000L
atmega328.build.core=arduino
atmega328.build.variant=standard

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

diecimila.name=Arduino Diecimila or Duemilanove w/ ATmega168

diecimila.upload.protocol=arduino
diecimila.upload.maximum_size=14336
diecimila.upload.speed=19200

diecimila.bootloader.low_fuses=0xff
diecimila.bootloader.high_fuses=0xdd
diecimila.bootloader.extended_fuses=0x00
diecimila.bootloader.path=atmega
diecimila.bootloader.file=ATmegaBOOT_168_diecimila.hex
diecimila.bootloader.unlock_bits=0x3F
diecimila.bootloader.lock_bits=0x0F

diecimila.build.mcu=atmega168
diecimila.build.f_cpu=16000000L
diecimila.build.core=arduino
diecimila.build.variant=standard

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

nano328.name=Arduino Nano w/ ATmega328

nano328.upload.protocol=arduino
nano328.upload.maximum_size=30720
nano328.upload.speed=57600

nano328.bootloader.low_fuses=0xFF
nano328.bootloader.high_fuses=0xDA
nano328.bootloader.extended_fuses=0x05
nano328.bootloader.path=atmega
nano328.bootloader.file=ATmegaBOOT_168_atmega328.hex
nano328.bootloader.unlock_bits=0x3F
nano328.bootloader.lock_bits=0x0F

nano328.build.mcu=atmega328p
nano328.build.f_cpu=16000000L
nano328.build.core=arduino
nano328.build.variant=eightanaloginputs

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

nano.name=Arduino Nano w/ ATmega168

nano.upload.protocol=arduino
nano.upload.maximum_size=14336
nano.upload.speed=19200

nano.bootloader.low_fuses=0xff
nano.bootloader.high_fuses=0xdd
nano.bootloader.extended_fuses=0x00
nano.bootloader.path=atmega
nano.bootloader.file=ATmegaBOOT_168_diecimila.hex
nano.bootloader.unlock_bits=0x3F
nano.bootloader.lock_bits=0x0F

nano.build.mcu=atmega168
nano.build.f_cpu=16000000L
nano.build.core=arduino
nano.build.variant=eightanaloginputs

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

mega2560.name=Arduino Mega 2560 or Mega ADK

mega2560.upload.protocol=stk500v2
mega2560.upload.maximum_size=258048
mega2560.upload.speed=115200

mega2560.bootloader.low_fuses=0xFF
mega2560.bootloader.high_fuses=0xD8
mega2560.bootloader.extended_fuses=0xFD
mega2560.bootloader.path=stk500v2
mega2560.bootloader.file=stk500boot_v2_mega2560.hex
mega2560.bootloader.unlock_bits=0x3F
mega2560.bootloader.lock_bits=0x0F

mega2560.build.mcu=atmega2560
mega2560.build.f_cpu=16000000L
mega2560.build.core=arduino
mega2560.build.variant=mega

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

mega.name=Arduino Mega (ATmega1280)

mega.upload.protocol=arduino
mega.upload.maximum_size=126976
mega.upload.speed=57600

mega.bootloader.low_fuses=0xFF
mega.bootloader.high_fuses=0xDA
mega.bootloader.extended_fuses=0xF5
mega.bootloader.path=atmega
mega.bootloader.file=ATmegaBOOT_168_atmega1280.hex
mega.bootloader.unlock_bits=0x3F
mega.bootloader.lock_bits=0x0F

mega.build.mcu=atmega1280
mega.build.f_cpu=16000000L
mega.build.core=arduino
mega.build.variant=mega

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

leonardo.name=Arduino Leonardo
leonardo.upload.protocol=avr109
leonardo.upload.maximum_size=28672
leonardo.upload.speed=57600
leonardo.upload.disable_flushing=true
leonardo.bootloader.low_fuses=0xff
leonardo.bootloader.high_fuses=0xd8
leonardo.bootloader.extended_fuses=0xcb
leonardo.bootloader.path=caterina
leonardo.bootloader.file=Caterina-Leonardo.hex
leonardo.bootloader.unlock_bits=0x3F
leonardo.bootloader.lock_bits=0x2F
leonardo.build.mcu=atmega32u4
leonardo.build.f_cpu=16000000L
leonardo.build.vid=0x2341
leonardo.build.pid=0x8036
leonardo.build.core=arduino
leonardo.build.variant=leonardo

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

mini328.name=Arduino Mini w/ ATmega328

mini328.upload.protocol=arduino
mini328.upload.maximum_size=28672
mini328.upload.speed=115200

mini328.bootloader.low_fuses=0xff
mini328.bootloader.high_fuses=0xd8
mini328.bootloader.extended_fuses=0x05
mini328.bootloader.path=optiboot
mini328.bootloader.file=optiboot_atmega328-Mini.hex
mini328.bootloader.unlock_bits=0x3F
mini328.bootloader.lock_bits=0x0F

mini328.build.mcu=atmega328p
mini328.build.f_cpu=16000000L
mini328.build.core=arduino
mini328.build.variant=eightanaloginputs

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

mini.name=Arduino Mini w/ ATmega168

mini.upload.protocol=arduino
mini.upload.maximum_size=14336
mini.upload.speed=19200

mini.bootloader.low_fuses=0xff
mini.bootloader.high_fuses=0xdd
mini.bootloader.extended_fuses=0x00
mini.bootloader.path=atmega
mini.bootloader.file=ATmegaBOOT_168_ng.hex
mini.bootloader.unlock_bits=0x3F
mini.bootloader.lock_bits=0x0F

mini.build.mcu=atmega168
mini.build.f_cpu=16000000L
mini.build.core=arduino
mini.build.variant=eightanaloginputs

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

ethernet.name=Arduino Ethernet

ethernet.upload.protocol=arduino
ethernet.upload.maximum_size=32256
ethernet.upload.speed=115200

ethernet.bootloader.low_fuses=0xff
ethernet.bootloader.high_fuses=0xde
ethernet.bootloader.extended_fuses=0x05
ethernet.bootloader.path=optiboot
ethernet.bootloader.file=optiboot_atmega328.hex
ethernet.bootloader.unlock_bits=0x3F
ethernet.bootloader.lock_bits=0x0F

ethernet.build.variant=standard
ethernet.build.mcu=atmega328p
ethernet.build.f_cpu=16000000L
ethernet.build.core=arduino

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

fio.name=Arduino Fio

fio.upload.protocol=arduino
fio.upload.maximum_size=30720
fio.upload.speed=57600

fio.bootloader.low_fuses=0xFF
fio.bootloader.high_fuses=0xDA
fio.bootloader.extended_fuses=0x05
fio.bootloader.path=arduino:atmega
fio.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
fio.bootloader.unlock_bits=0x3F
fio.bootloader.lock_bits=0x0F

fio.build.mcu=atmega328p
fio.build.f_cpu=8000000L
fio.build.core=arduino
fio.build.variant=eightanaloginputs

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

bt328.name=Arduino BT w/ ATmega328

bt328.upload.protocol=arduino
bt328.upload.maximum_size=28672
bt328.upload.speed=19200
bt328.upload.disable_flushing=true

bt328.bootloader.low_fuses=0xff
bt328.bootloader.high_fuses=0xd8
bt328.bootloader.extended_fuses=0x05
bt328.bootloader.path=bt
bt328.bootloader.file=ATmegaBOOT_168_atmega328_bt.hex
bt328.bootloader.unlock_bits=0x3F
bt328.bootloader.lock_bits=0x0F

bt328.build.mcu=atmega328p
bt328.build.f_cpu=16000000L
bt328.build.core=arduino
bt328.build.variant=eightanaloginputs

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

bt.name=Arduino BT w/ ATmega168

bt.upload.protocol=arduino
bt.upload.maximum_size=14336
bt.upload.speed=19200
bt.upload.disable_flushing=true

bt.bootloader.low_fuses=0xff
bt.bootloader.high_fuses=0xdd
bt.bootloader.extended_fuses=0x00
bt.bootloader.path=bt
bt.bootloader.file=ATmegaBOOT_168.hex
bt.bootloader.unlock_bits=0x3F
bt.bootloader.lock_bits=0x0F

bt.build.mcu=atmega168
bt.build.f_cpu=16000000L
bt.build.core=arduino
bt.build.variant=eightanaloginputs

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

lilypad328.name=LilyPad Arduino w/ ATmega328

lilypad328.upload.protocol=arduino
lilypad328.upload.maximum_size=30720
lilypad328.upload.speed=57600

lilypad328.bootloader.low_fuses=0xFF
lilypad328.bootloader.high_fuses=0xDA
lilypad328.bootloader.extended_fuses=0x05
lilypad328.bootloader.path=atmega
lilypad328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
lilypad328.bootloader.unlock_bits=0x3F
lilypad328.bootloader.lock_bits=0x0F

lilypad328.build.mcu=atmega328p
lilypad328.build.f_cpu=8000000L
lilypad328.build.core=arduino
lilypad328.build.variant=standard

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

lilypad.name=LilyPad Arduino w/ ATmega168

lilypad.upload.protocol=arduino
lilypad.upload.maximum_size=14336
lilypad.upload.speed=19200

lilypad.bootloader.low_fuses=0xe2
lilypad.bootloader.high_fuses=0xdd
lilypad.bootloader.extended_fuses=0x00
lilypad.bootloader.path=lilypad
lilypad.bootloader.file=LilyPadBOOT_168.hex
lilypad.bootloader.unlock_bits=0x3F
lilypad.bootloader.lock_bits=0x0F

lilypad.build.mcu=atmega168
lilypad.build.f_cpu=8000000L
lilypad.build.core=arduino
lilypad.build.variant=standard

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

pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328

pro5v328.upload.protocol=arduino
pro5v328.upload.maximum_size=30720
pro5v328.upload.speed=57600

pro5v328.bootloader.low_fuses=0xFF
pro5v328.bootloader.high_fuses=0xDA
pro5v328.bootloader.extended_fuses=0x05
pro5v328.bootloader.path=atmega
pro5v328.bootloader.file=ATmegaBOOT_168_atmega328.hex
pro5v328.bootloader.unlock_bits=0x3F
pro5v328.bootloader.lock_bits=0x0F

pro5v328.build.mcu=atmega328p
pro5v328.build.f_cpu=16000000L
pro5v328.build.core=arduino
pro5v328.build.variant=standard

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

pro5v.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168

pro5v.upload.protocol=arduino
pro5v.upload.maximum_size=14336
pro5v.upload.speed=19200

pro5v.bootloader.low_fuses=0xff
pro5v.bootloader.high_fuses=0xdd
pro5v.bootloader.extended_fuses=0x00
pro5v.bootloader.path=atmega
pro5v.bootloader.file=ATmegaBOOT_168_diecimila.hex
pro5v.bootloader.unlock_bits=0x3F
pro5v.bootloader.lock_bits=0x0F

pro5v.build.mcu=atmega168
pro5v.build.f_cpu=16000000L
pro5v.build.core=arduino
pro5v.build.variant=standard

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

pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328

pro328.upload.protocol=arduino
pro328.upload.maximum_size=30720
pro328.upload.speed=57600

pro328.bootloader.low_fuses=0xFF
pro328.bootloader.high_fuses=0xDA
pro328.bootloader.extended_fuses=0x05
pro328.bootloader.path=atmega
pro328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
pro328.bootloader.unlock_bits=0x3F
pro328.bootloader.lock_bits=0x0F

pro328.build.mcu=atmega328p
pro328.build.f_cpu=8000000L
pro328.build.core=arduino
pro328.build.variant=standard

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

pro.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168

pro.upload.protocol=arduino
pro.upload.maximum_size=14336
pro.upload.speed=19200

pro.bootloader.low_fuses=0xc6
pro.bootloader.high_fuses=0xdd
pro.bootloader.extended_fuses=0x00
pro.bootloader.path=atmega
pro.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex
pro.bootloader.unlock_bits=0x3F
pro.bootloader.lock_bits=0x0F

pro.build.mcu=atmega168
pro.build.f_cpu=8000000L
pro.build.core=arduino
pro.build.variant=standard

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

atmega168.name=Arduino NG or older w/ ATmega168

atmega168.upload.protocol=arduino
atmega168.upload.maximum_size=14336
atmega168.upload.speed=19200

atmega168.bootloader.low_fuses=0xff
atmega168.bootloader.high_fuses=0xdd
atmega168.bootloader.extended_fuses=0x00
atmega168.bootloader.path=atmega
atmega168.bootloader.file=ATmegaBOOT_168_ng.hex
atmega168.bootloader.unlock_bits=0x3F
atmega168.bootloader.lock_bits=0x0F

atmega168.build.mcu=atmega168
atmega168.build.f_cpu=16000000L
atmega168.build.core=arduino
atmega168.build.variant=standard

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

atmega8.name=Arduino NG or older w/ ATmega8

atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
atmega8.upload.speed=19200

atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca
atmega8.bootloader.path=atmega8
atmega8.bootloader.file=ATmegaBOOT.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F

atmega8.build.mcu=atmega8
atmega8.build.f_cpu=16000000L
atmega8.build.core=arduino
atmega8.build.variant=standard
##############################################################


atmega328.name=FTDI
atmega328.upload.protocol=stk500
atmega328.upload.maximum_size=30720
atmega328.upload.speed=57600
atmega328.bootloader.low_fuses=0xFF
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05
atmega328.bootloader.path=atmega
atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0F
atmega328.build.mcu=atmega328p
atmega328.build.f_cpu=16000000L
atmega328.build.core=arduino


From looking at this, it doesn't display the boards in the order that they appear in boards.txt because the second board listed in my IDE is FTDI and it is the last one in boards.txt.

Thanks again for all your help and Adafruit's great site and hardware.

John.
Captapollo
 
Posts: 6
Joined: Mon Mar 05, 2012 11:32 am

Re: Can't program UNO with Xbee

by adafruit_support_bill on Sun Oct 21, 2012 10:57 am

I just checked those links and they seem to be working fine. If you are using Firefox, try flushing the browser cache. This seems to be a common problem with recent versions of Firefox.

The chips we sell here are pre-programmed with the "Adaboot" loader. It is compatible with the Duemilanove for upload purposes.

What version of the IDE are you using? All the recent releases from Arduino.cc have Duemilanove w/ 328.
User avatar
adafruit_support_bill
 
Posts: 25556
Joined: Sat Feb 07, 2009 9:11 am

Re: Can't program UNO with Xbee

by Captapollo on Sun Oct 21, 2012 1:26 pm

Wow! Working on Sunday? Or do you just do this for fun? :)

Thanks for the Firefox tip, flushing my cache worked.

I am using IDE 1.0.1, it says so in the title bar and under help, about. It is a fresh install on a new computer less than a month old. As you can see from my above attachments, the Duemilanove w/ 328 does not show under my boards selection list yet it is the second option in my boards.txt file.

Thank you for the link to Adaboot. It looks like there is some good reading there.

Question: I bought my Uno board from you, what boot loader is on that?
I bought 3 of these http://www.adafruit.com/products/123 from you, what boot loader is on them?

Do you know of any experts on the bootloaders who may be able to analyze this problem?

Thank you, John.
Captapollo
 
Posts: 6
Joined: Mon Mar 05, 2012 11:32 am

Re: Can't program UNO with Xbee

by adafruit_support_bill on Sun Oct 21, 2012 3:07 pm

Interesting. This is what I get from 1.0.1:
Boards.png
Boards.png (84.39 KiB) Viewed 1442 times

I don't believe I have ever seen FTDI listed as a board type either. I wonder if you might have another boards file around somewhere that is getting picked up by the IDE.

I believe that the UNOs are currently shipping with a version of the Optiboot bootloader. All the pre-flashed chips we sell have an Adaboot loader.

Westfw is one of wisest in the ways of bootloaders. He participates here, as well as on the forums at Arduino.cc.

Wow! Working on Sunday? Or do you just do this for fun?

We work on Sundays because it is fun :D
User avatar
adafruit_support_bill
 
Posts: 25556
Joined: Sat Feb 07, 2009 9:11 am

Re: Can't program UNO with Xbee

by Captapollo on Sun Oct 21, 2012 10:50 pm

I went and looked at my boards.txt file, and I also redownloaded the Arduino software from Arduino.cc and looked at the boards.txt in that one and a lightbulb lit up. During my testing last week doing much Googleing (is that a word now? I think it actually is) I ran across the following posts on the Adafruit site "http://forums.adafruit.com/viewtopic.php?f=19&t=25820&start=0" and so I pasted the lines from the last post into my boards.txt file to see if that would solve my problems last week. It of course didn't and I forgot until just a little while ago that I had don it. Oh well. I have restored my boards.txt file now and my screen matches yours, the Duemilanove with 328 is the second one in my list. It is strange how adding the FTDI entry replaced that one in the list.

Thanks for the info on which bootloaders are in the chips I bought, and I will try to get in contact with Westfw. i will be sure to let you know if I learn more.

John.
Captapollo
 
Posts: 6
Joined: Mon Mar 05, 2012 11:32 am

Re: Can't program UNO with Xbee

by shamika89 on Fri Oct 26, 2012 3:26 pm

so is this mean these xbees dont work with arduino UNO, MEGA and other boards..?? :(
shamika89
 
Posts: 1
Joined: Fri Oct 26, 2012 3:23 pm

Re: Can't program UNO with Xbee

by westfw on Sat Oct 27, 2012 2:47 am

Westfw is one of wisest in the ways of bootloaders. He participates here, as well as on the forums at Arduino.cc.

I guess that after an accolade like that, I should say something.

I didn't see this earlier because my Xbees are sitting neglected, but there are a couple of possible issues. The difference between the Uno bootloader (optiboot) and prior bootloaders (Duemilanove, Adaboot) include a couple of important aspects that could interfere with operation over Xbee connections:

1) Change in upload speed. Optiboot operates at 115200bps. There's no point in trying other speeds, because there is no speed detection or anything. My understanding is that 115200 is at the upper range for what is possible over Xbee links...

2) Change in bootloader timeout. When the Arduino is reset, the bootloader spends a "timeout" period looking for upload attempts. On early arduinos, this was close to 10 seconds, to allow for manual actuation of the reset switch. On an Uno with optiboot (and with the auto-reset change), this was reduced to only one second. It's possible that radio transmission introduces enough delay that one second is not long enough.

I'll try to get around to actual experiments. In the short term, if reverting to an older bootloader works, that's a pretty easy change (and inexpensive, at least compared to the cost of arduino+Xbee.) Replacing the chip is one way, and there are numerous conversations and tutorials on the arduino forums (http://arduino.cc/forum/ ) on how to burn new bootloaders onto old (or bare) chips. These should work reasonably will for burning old bootloaders onto new chips.

You should forget about using "shift-upload" to get better debugging info. The use of "shift" changed in Arduino IDE 1.0. Now you should set "verbose" in the preferences dialog.

does this mean these xbees dont work with arduino UNO, MEGA and other boards..??
I'm pretty sure that the only issue here is "uploading" over the xbee link. You can still upload using a directly connected USB cable, disconnect the usb and insert the boards into a closet, and have the sketch COMMUNICATE over xbee just fine...
User avatar
westfw
 
Posts: 1373
Joined: Fri Apr 27, 2007 12:01 pm
Location: SF Bay area