2

I flashed an Arduino Nano compatible with ftdi_eeprom and the following config:

vendor_id=0x0403    # Vendor ID
product_id=0x6001   # Product ID

max_power=0     # Max. power consumption: value * 2 mA. Use 0 if self_powered = true.

###########
# Strings #
########### 
manufacturer="FTDI"     # Manufacturer
product="Arduino Nano"  # Product
serial="arduino_1"      # Serial

###########
# Options #
###########
self_powered=false  # Turn this off for bus powered
remote_wakeup=false # Turn this on for remote wakeup feature
use_serial=true     # Use the serial number string

# Normally out don't have to change one of these flags
BM_type_chip=true       # Newer chips are all BM type
in_is_isochronous=false     # In Endpoint is Isochronous
out_is_isochronous=false    # Out Endpoint is Isochronous
suspend_pull_downs=false    # Enable suspend pull downs for lower power
change_usb_version=false    # Change USB Version
usb_version=0x0200      # Only used when change_usb_version is enabled

########
# Misc #
########

filename="eeprom.new"   # Filename, leave empty to skip file writing

My corresponfing udev rules work and I get /dev/arduino_1 after connecting.

However. After the flash, everything seems to work, But: The TX-LED is constantly on. Even, when the device is not sending. Why?

Update & solution

First, I removed this line, because it threw warning messages (outdated)

# BM_type_chip=true         # Newer chips are all BM type

Then I studied the schematics of the Nano and figured out, that RX and TX LEDs are indeed connected to CBUS0 and CBUS1. So, I added two lines to my config

  cbus0=RXLED
  cbus1=TXLED

Which had the effect, that now both RX and TX where constantly on. So, I finally read the manual which says on page 11, that the commands in question need a trailing #. I updated my config again:

cbus0=RXLED#
cbus1=TXLED#

Extra:

Indeed, I had to install ftdi_eeprom to get the job done

 apt-get remove ftdi-eeprom
 apt-get install swig libusb-1.0-0-dev libconfuse-dev doxygen
 git clone https://github.com/legege/libftdi.git
 cd libftdi.git
 cmake .
 make 
 make install
 ftdi_eeprom/ftdi_eeprom --flash-eeprom myconfig.conf
1

The ftdi_eeprom utility re-writes the entire EEPROM, not just the selected bits you have chosen. That includes the "CBUS" pin configurations.

You need to check on the Nano's schematic which LED is connected to which CBUSx pin on the FTDI and set it accordingly. You do that in your config using:

cbus0=TXLED
cbus1=RXLED

for example.

Possible settings for the CBUS pins are:

  • TXDEN
  • PWREN
  • RXLED
  • TXLED
  • TXRXLED
  • SLEEP
  • CLK48
  • CLK24
  • CLK12
  • CLK6
  • IO_MODE
  • BITBANG_WR
  • BITBANG_RD
  • SPECIAL

Except CBUS4 which only has the functions:

  • TXDEN
  • PWRON
  • RXLED
  • TXLED
  • TX_RX_LED
  • SLEEP
  • CLK48
  • CLK24
  • CLK12
  • CLK6

There is a chance that your pre-packages version of ftdi_eeprom doesn't support those settings, so you will need to download and compile the latest version from source from here: https://github.com/legege/libftdi

Also during testing I accidentally changed the VID of one of my boards thus rendering it unresponsive. I did that by omitting the 0x from the VID and PID numbers. Extreme care should be exercised using thin utility. I have submitted a patch to allow the specification of a default VID for recovery from such situations.

  • I'll try that today and give a reply. Thanks very much so far – ansi_lumen Mar 25 '16 at 12:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.