Overview
This page describes how to upgrade from LinuxCNC 2.5.x to LinuxCNC 2.6.x. There is no one-step upgrade from EMC 2.4 or earlier to LinuxCNC 2.6. To perform such an upgrade, follow the instructions to upgrade to 2.5 first. (
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?UpdatingTo2.5) and then follow the steps on this page.
Getting LinuxCNC 2.6
Upgrading Ubuntu 10.04 (Lucid) from LinuxCNC 2.5 to 2.6
Do this if you have a running install of LinuxCNC on Ubuntu 10.04 Lucid, for example from one of the LinuxCNC Live CDs.
First you need to tell your computer where to find the new LinuxCNC software:
- Click on the System menu in the top panel and select Administration->Software Sources.
- Select the Other Software tab.
- Disable or delete all the old linuxcnc.org entries.
- Add a new Apt line that looks like this:
deb http://linuxcnc.org/ lucid base 2.6
When you add that line, Software Sources will pop up a window informing you that the information about available software is out-of-date. Click the Reload button.
Now your computer knows about the new software, next we need to tell it to install it:
- Click on the System menu in the top panel and select Administration->Synaptic Package Manager
- In the Quick Search bar at the top, type linuxcnc.
- Click the check box to mark the new linuxcnc package for installation.
- Click the Apply button, and let your computer install the new package. The old linuxcnc 2.5 package will be automatically upgraded to the new linuxcnc 2.6 package.
Fresh install on Debian 7 (Wheezy)
The LinuxCNC Live+Install Debian Wheezy image is the preferred way to make fresh installs of LinuxCNC 2.6. Full instructions and details here:
http://article.gmane.org/gmane.linux.distributions.emc.user/52401
A couple of notes:
- Download the iso file and burn it to a DVD.
- To install pick graphical install at the first prompt.
- To enable auto login edit etc/lightdm/lightdm.conf and look for the [SeatDefaults] section snd uncomment autologin name and add your user name and autologin timeout.
- mousepad is similar to gedit so open a terminal and:
- sudo mousepad etc/lightdm/lightdm.conf
If you prefer gedit then you need to update apt-get
- sudo apt-get update
- sudo apt-get install gedit
Fresh install on Ubuntu 12.04 (Precise)
- Install Ubuntu Precise 12.04 x86 (32-bit). Any flavor should work (regular Ubuntu, Xubuntu, Lubuntu, etc). 64-bit (AMD64) is currently not supported. You can download the installer here: http://releases.ubuntu.com/precise/
- Run sudo apt-get update followed by sudo apt-get dist-upgrade to bring the machine up to date with the latest packages in Ubuntu Precise.
- Add the LinuxCNC Archive Signing Key to your apt keyring by running sudo apt-key adv --keyserver hkp://keys.gnupg.net --recv-key 8f374fef
- Hit the "Windows" key on your keyboard to bring up the system search bar. Search for "Software Center" and launch it. Open the Edit menu and launch Software Sources. Add a new Apt line that looks like this:
deb http://linuxcnc.org/ precise base 2.6
- Run sudo apt-get update again to fetch the package list from linuxcnc.org.
- Install the RTAI kernel and modules by running: sudo apt-get install linux-image-3.4-9-rtai-686-pae rtai-modules-3.4-9-rtai-686-pae
- If you want to be able to build LinuxCNC from source using the git repo, also run sudo apt-get install linux-headers-3.4-9-rtai-686-pae
- Reboot, and make sure you boot into the rtai kernel. When you log in, verify that uname -r says 3.4-9-rtai-686-pae
- Run sudo apt-get install linuxcnc
- Machine away!
Changes to your configuration
Smart-serial MPG encoder changes
In 2.5 the MPG encoders on the 7i73 and 7i84, and also the simple encoders on 7i77 GPIO export a single integer counts pin.
In 2.6 this channel becomes more like a full encoder, with scaling, reset, etc.
so, for example, hm2_5i23.0.7i73.0.0.enc0 is replaced by
hm2_5i23.0.7i73.0.0.enc0.count
hm2_5i23.0.7i73.0.0.enc0.rawcounts
hm2_5i23.0.7i73.0.0.enc0.position
hm2_5i23.0.7i73.0.0.enc0.index-enable
hm2_5i23.0.7i73.0.0.enc0.scale
hm2_5i23.0.7i73.0.0.enc0.reset
hm2_5i23.0.7i73.0.0.enc0.counts-per-rev
Hostmot2 7i64 HAL pin changes
Hostmot2 7i64 digital input HAL pins changed names from hm2_5i23.0.7i64.0.0.digin.00.in and hm2_5i23.0.7i64.0.0.digin.00.in-not to hm2_5i23.0.7i64.0.0.input-00 and hm2_5i23.0.7i64.0.0.input-00-not.
Hostmot2 7i64 digital output HAL pins changed names from hm2_5i23.0.7i64.0.0.digout.00.out and hm2_5i23.0.7i64.0.0.digout.00.invert to hm2_5i23.0.7i64.0.0.output-00 and hm2_5i23.0.7i64.0.0.output-00-invert.
Hostmot2 8i20 HAL pin changes
HAL pin hm2_5i23.0.8i20.0.0.amp-enable was removed.
HAL pin hm2_5i23.0.8i20.0.0.max_current was replaced by hm2_5i23.0.8i20.0.0.current.maxlim and hm2_5i23.0.8i20.0.0.current.minlim.
A very significant further change is that the current is now a value in amps, not the previous 0 - 1 scaling.
Fault/Status? registers are now individual pins:
- hm2_5i25.0.8i20.0.1.fault.U-current and hm2_5i25.0.8i20.0.1.fault.U-current-not
- hm2_5i25.0.8i20.0.1.fault.V-current and hm2_5i25.0.8i20.0.1.fault.V-current-not
- hm2_5i25.0.8i20.0.1.fault.W-current and hm2_5i25.0.8i20.0.1.fault.W-current-not
- hm2_5i25.0.8i20.0.1.fault.bus-high and hm2_5i25.0.8i20.0.1.fault.bus-high-not
- hm2_5i25.0.8i20.0.1.fault.bus-overv and hm2_5i25.0.8i20.0.1.fault.bus-overv-not
- hm2_5i25.0.8i20.0.1.fault.bus-underv and hm2_5i25.0.8i20.0.1.fault.bus-underv-not
- hm2_5i25.0.8i20.0.1.fault.framingr and hm2_5i25.0.8i20.0.1.fault.framingr-not
- hm2_5i25.0.8i20.0.1.fault.module and hm2_5i25.0.8i20.0.1.fault.module-not
- hm2_5i25.0.8i20.0.1.fault.no-enable and hm2_5i25.0.8i20.0.1.fault.no-enable-not
- hm2_5i25.0.8i20.0.1.fault.overcurrent and hm2_5i25.0.8i20.0.1.fault.overcurrent-not
- hm2_5i25.0.8i20.0.1.fault.overrun and hm2_5i25.0.8i20.0.1.fault.overrun-not
- hm2_5i25.0.8i20.0.1.fault.overtemp and hm2_5i25.0.8i20.0.1.fault.overtemp-not
- hm2_5i25.0.8i20.0.1.fault.watchdog and hm2_5i25.0.8i20.0.1.fault.watchdog-not
- hm2_5i25.0.8i20.0.1.status.brake-old and hm2_5i25.0.8i20.0.1.status.brake-old-not
- hm2_5i25.0.8i20.0.1.status.brake-on and hm2_5i25.0.8i20.0.1.status.brake-on-not
- hm2_5i25.0.8i20.0.1.status.bus-underv and hm2_5i25.0.8i20.0.1.status.bus-underv-not
- hm2_5i25.0.8i20.0.1.status.current-lim and hm2_5i25.0.8i20.0.1.status.current-lim-not
- hm2_5i25.0.8i20.0.1.status.ext-reset and hm2_5i25.0.8i20.0.1.status.ext-reset-not
- hm2_5i25.0.8i20.0.1.status.no-enable and hm2_5i25.0.8i20.0.1.status.no-enable-not
- hm2_5i25.0.8i20.0.1.status.pid-on and hm2_5i25.0.8i20.0.1.status.pid-on-not
- hm2_5i25.0.8i20.0.1.status.sw-reset and hm2_5i25.0.8i20.0.1.status.sw-reset-not
- hm2_5i25.0.8i20.0.1.status.wd-reset and hm2_5i25.0.8i20.0.1.status.wd-reset-not
The under volt and no-enable pins appear as both status and fault, this is because different firmware versions treat the situations differently.
Typically in RevB boards both lack of enable and low bus voltage stop the card, whereas in the RevD boards the only stop the output and the board recovers when the condition is removed.
Either board version may run either firmware version, however.
PID tuning change
The pid option error-previous-target now defaults to TRUE. This makes PID work better when there is I gain, or in torque-mode loops. You may need to retune. If you want to keep your old tuning, just set all your pid.N.error-previous-target pins to FALSE. If you want to use the new default, you probably only need to adjust your FF1 setting. In testing on a real machine, it was possible to get much better tuning with the new default of error-previous-target = TRUE.
HAL syntax for connecting pins & signals is more strict
The halcmd manpage has always shown "<=", "=>", and "<=>", preceeded and followed by a space character, as the accepted arrows for connecting pins and signals. However, before 2.6 halcmd would accept any number of "=" characters in the arrows. As of 2.6, only the documented arrows are accepted. If you have a "net" command in a .hal file that uses multiple "=" signs, you'll get a load-time error. Simply change it to use the documented arrow styles to fix it.
Important Behaviour Changes
Feed override doesn't affect rapid moves anymore - use max-velocity override.