AVReAl/Linux and root privileges

Originally AVReAl/Linux worked with LPT directly, by processor in/out instructions. This method requires root privileges. Later /dev/parport support was added. It is enough to add a user in lp group for this access method. Both ways are described in AVReAl and LPT in Linux post.

Then FTDI MPSSE support was added. I noticed that without administrator rights the program can’t connect to FT2232 chip. But all AVReAl versions on my PC run with root priveleges because it is required for LPT direct acces testing. So, the program works fine with FTDI chips and I had no need to dig deeper.

Finally I decided to investigate the matter. As often happens, to do right you just stop and spend a little time to read and think.

To work with FTDI-based programmers without root priveleges add a file named, for example 55-ftdi.rules to directory /etc/udev/rules.d/. The file must have the following content:

# FTDI-based devices
#
# FTDI vid=0403
# FT2232, FT2232H: pid=6010
# FT4232H:  pid=6011
# FT232H:   pid=6014
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010|6011|6014", OWNER="root", GROUP="root", MODE="0666"

You need not reboot. It is enough to reconnet the programming adapter.

The rules use default vid/pid for FTDI chips. If you use an adapter with different vid/pid, add appropriate line into the file.

OpenOCD contains a file with rules for all adapters supported by this program. If FTDI-based adapter listed in the file is used with AVReAl, you can simply copy the file into /etc/udev/rules.d/ directory. OpenOCD rules use GROUP="plugdev", MODE="0664". As for me it is no difference between this two variants for desktop PC because all users are already included in plugdev group.

Of course, you must have administrator rights to create the file. After that you will be able to work with AVReAl without root privileges.

Attached Files:

AVReAl and MPSSE

Some of FTDI USB converter chips have MPSSE — hardware engine for implementation of serial interfaces like JTAG, SPI, I2C. FT2232D and previous versions FT2232C, FT2232L support Full-Bandwidth USB and have upper TCK/SCK frequency level 6 MHz. FT2232H, FT4232H, FT232H work in USB 2.0 Hi-Speed mode and have 30 MHz limit.

MPSSE defines DBUS0..DBUS2 as TCK/SCK, TDI/MOSI and TDO/MISO. AVR ISP interface requires RESET signal. DBUS3 (TMS/CS) can be used for this purpose and AVReAl uses it by default.

Read more about MPSSE and AVReAl » » »

AVReAl update — 1.28r9

avreal v1.28r9 (Tue 2011-12-20) has been released.

  • FT232H MPSSE mode support added.
  • Delays processing in Windows version changed: lower CPU load for -k/-K switches.
  • Resynchronisation method changed for all microcontrollers.
    Resync process started with one attempt of RESET pulse method then continued with SCK pulse method.
    More about synchronisation.

ISP-programmer to AVR synchronisation

AVR ISP-programming starts with RESET activation following by transmitting of programming enable instruction. Entry sequence requirement is that SCK must be set to ‘0’ during RESET activation. Otherwise SCK falling edge causes unintended programming hardware state change.

AVR programming waveforms

The falling edge distorts 4-byte programming instruction. The microcontroller does not recognise it and does not enter programming mode. There is no sense to send programming entry instruction again because byte-level command’s phase is shifted by one SCK period. The last SCK pulse of previous instruction will act as extra pulse for subsequent command.

Synchronisation can also be corrupted during programming process. Read more in publication about AVReAl “synchronisation lost” message.

Atmel datasheets describe two methods for synchronisation recovery.

»»» Read more about resynchronisation[/lаng_en]

AVReAl beta — 1.28r9b1

avreal beta-version 1.28r9b1 with FT232H support has been released.
Please, test it.


Update: testing done, thanks.

AVReAl 1.28r8 / FreeBSD

avreal v.1.28r8 and older ones were built for FreeBSD 6.4.
avreal1.28r8 was rebuilt for FreeBSD 8.2 then tested and uploaded to avreal download page.

All future versions will be built for FreeBSD 8.2 only.

AVReAl update — 1.28r8

avreal v1.28r8 (Sat 2011-08-13) has been released.

  • Raw binary file support is added.
    Binary files are denoted by :bin: prefix in file name.
  • -r switch behavior is changed.
    -r+ forces writing full memory content into output file (“old” behavior of -r).
    When -r is used, rows which contain only FF bytes in data field will not be written into :ihex: output file. FF-only tail will not be written into :bin: file.

How to install two versions of libftd2xx

As it was published before 64-bit libftd2xx.so libraries version 1.0.0 and above are not compatible with earlier ones. There are no problems with 32-bit libraries.
It is necessary to install old libftd2xx package for 64-bit avreal/Linux. The package can be downloaded from here.
AVReAl beginning from 1.28r6 loads the library by name libftd2xx.so.0 but not libftd2xx.so. That allows to install both library versions.
Let review installation process.

Continue reading ‘How to install two versions of libftd2xx’ »

AVReAl update — 1.28r7

avreal v1.28r7 (Sun 2011-02-27) has been released.

bug in -v+ switch processing

-v+ switch (-v switch with + modifier) is incorrectly processed by avreal versions from 1.28r2 to 1.28r6.
avreal checks for 0xFF all memory locations instead of ones unused in HEX-file.
That way avreal stops work after verification and rejects subsequent operations, for example, fuse write command.

-v switch without modifier is processed properly so it is recommended to use it.
The bug is not critical. Bugfix will be later.


The bug has been fixed in version 1.28r7.

[flagcounter image]