User Tools

Site Tools

Navigation Menu


  • StatusClosed
  • OP-ModePre-Launch
  • LocationN48 - E11
  • Localtime07:00
  • CountdownT-00D 00:00

Hot Projects


SEEDStack - Open 3D printable seed/sprouting systemDIY Food Hacking


UCSSPM - Unified Clear-Sky Solar Prediction ModelOpen Solar Power


picoReflow - DIY PID Reflow Oven Controller based on RaspberryPiDIY Reflow Soldering


PiGI - DIY Geiger Counter based on RaspberryPiRasPi Geiger Counter

DIY ARA-2000

Active Wideband Receiver Antenna for SDR - ARA-2000Wideband Antenna


DSPace - Map everythingMap everything!


Emerge gentoo crossdev avr-gcc for Arduino and Cura

In order to update the firmware of our 3D printer for dual head extrusion and to compile Cura (an alternative gcode slicer) a working AVR crossdev toolchain was needed.

The printer firmware uses the Arduino toolkit so the dependency was obvious, the Cura build unfortunately needs a working avr-gcc as well (not that obvious), because it also ships with Ultimaker firmware, which cannot be disabled, even if you don't have an Ultimaker (kinda stupid).

Currently, the stable crossdev avr-gcc suite with gcc 4.8.3 did not compile so it was a bit of a hassle to get it running again. In order to save somebody else the time to figure this out, here's the install trace that was already tested verbatim on another gentoo amd64 box and worked as well.

Let's start with a clean slate and unmerge any cross-avr chain:

crossdev -C avr

This was used originally:

USE="multilib -cxx" crossdev -v -s1 --without-headers --target avr --gcc 4.5.2 --binutils 2.21 --libc 1.7.0
USE="multilib cxx" crossdev -v -s4 --target avr --gcc 4.5.2 --binutils 2.21 --libc 1.7.0

As of 2015-04-05 the above combination doesn't work anymore, please use this instead:

USE="multilib -cxx" crossdev -v -s1 --without-headers --target avr --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0
USE="multilib cxx" crossdev -v -s4 --target avr --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0

And to finish it up:

ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts /usr/avr/lib/ldscripts
ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts /usr/x86_64-pc-linux-gnu/avr/binutils-bin/2.20.1/ldscripts
cd /usr/avr/lib
ln -nsf avr5/crtm328p.o .
ln -nsf avr6/crtm2561.o .
ln -nsf avr6/crtm2560.o .
mkdir -p /usr/share/arduino/hardware/tools/avr/bin/
ln -s /usr/bin/avr-gcc /usr/share/arduino/hardware/tools/avr/bin/avr-gcc
ln -s /usr/bin/avr-g++ /usr/share/arduino/hardware/tools/avr/bin/avr-g++
ln -s /usr/bin/avr-objcopy /usr/share/arduino/hardware/tools/avr/bin/avr-objcopy
ln -s /usr/bin/avr-ar /usr/share/arduino/hardware/tools/avr/bin/avr-ar
ln -s /usr/bin/avr-as /usr/share/arduino/hardware/tools/avr/bin/avr-as
ln -s /usr/bin/avr-size /usr/share/arduino/hardware/tools/avr/bin/avr-size

If you want to use the Software Serial and monitoring feature, you need to install rxtx-2.2_pre2 or newer. This version is still masked in the main portage tree, so you will need to unmask it by adding

=dev-java/rxtx-2.2_pre2 ~x86 ~amd64

to /etc/portage/package.keywords/arduino and then (re)emerge it

$ emerge dev-java/rxtx

Also, if you don't want to use the crappy JAVA based Arduino IDE, you can simply use a Makefile like this:

Mission-Log entry created by chrono on 2015/01/20 16:07 UTC


2015/08/16 14:12

After long web search this heped me, with a few tweaks. thanks

2015/08/18 16:22

Great! Care to share which settings/versions you changed?

Comment text

Please type the letters you see on the left into the box on the right:

   ____   __   _   __  _____   __ __
  / __/  / /  | | / / / ___/  / //_/
 / _/   / /__ | |/ / / (_ /  / ,<   
/_/    /____/ |___/  \___/  /_/|_|