LinuxCNC on a Liva X
http://www.ecs.com.tw/ECSWebSite/Product/Product_LIVA.aspx?DetailID=1593&LanID=0#Xtreme
It took several days to get LinuxCNC installed on the Liva X. I've tried various distributions (11 so far), including 32 and 64 bit installs with varying luck. Currently, it's running a copy of Linux Mint LMDE 2, with RT PREEMPT 4.4. But I'm getting massive latencies - over 1,000,000ns. I did some tweaking of the kernel based on some internet advice, but I'm certainly no expert there.
The Liva X uses UEFI and an internal eMMC drive. This really complicates things. I've found that I can only install 64 bit versions of Linux (because of UEFI), and they have to be recent, or they don't see the eMMC drive during installation. Also, only the newer versions support the internal wireless chip. So for the OS, I've only been able to install 64 bit versions of:
- Ubuntu 14.04.3 LTS
- Linux Mint 17.3
- Linux Mint LMDE 2
I've read on the board a bit about how RT PREEMPT 3.x distributions may have better latency than the newer 4.x version that I used. So I'm thinking that I may need to compile another kernel.
Does anyone have a recommendation on what path I should pursue, here? I saw that Peter (PCW) posted links to some instructions and a .config file, but the config is only for a 32 bit system:
freeby.mesanet.com/makert should build the latest preemt-rt kernel
freeby.mesanet.com/rtconfig is a known working .config file
I thought that I'd give the build instructions a go, but before I unknowingly go down another dead end, I thought I'd check here.
Please Log in or Create an account to join the conversation.
Does anyone have a recommendation on what path I should pursue, here? I saw that Peter (PCW) posted links to some instructions and a .config file, but the config is only for a 32 bit system:
freeby.mesanet.com/makert should build the latest preemt-rt kernel
freeby.mesanet.com/rtconfig is a known working .config file
I thought that I'd give the build instructions a go, but before I unknowingly go down another dead end, I thought I'd check here.
The instructions can be used generically, just substitute the later kernel and rt patch.
The rt config is 32 bit only because the option for 64 bit is not set.
Patch the kernel then run make menu-config, changing the setting on the first page to 64 bit, then save and compile.
The Liva X uses UEFI and an internal eMMC drive.
Having read how you cannot even access the BIOS properly unless you install windoze and how UEFI cannot be disabled, not a computer I would ever consider.
regards
Please Log in or Create an account to join the conversation.
When I tested this it was with a Preempt-RT 3.18 kernel, a 3.18 or 4.1 kernel may give
better performance as the 4.4 kernel is _VERY_ new.
I did have to disable the on card Broadcom WIFI card as it caused massive latency spikes (I used a USB WIFI dongle for network access)
The other option is to just slow down the servo thread, this does compromise performance slightly because of
chording errors due to the velocity being constant between thread invocations.
500 Hz or even 250 Hz might be OK depending on accuracy requirements.
Note that at 250 Hz and a moderate 300 IPM, 50 IPS/S accel system (.1 second to full 300 IPM speed)
the chord error is less than .0001"
Please Log in or Create an account to join the conversation.
I'm a persistent person, and I've tried more than 20 different distributions in more than 30 trials of Linux on the Liva X. I've gotten a lot of experience at compiling kernels! Here are my conclusions so far:
- I can't run older distributions. They don't support the UEFA and/or the eMMC drives.
- I can install a few 32 bit versions, but I can't get them to boot automatically after installation. I can use something like a rEFIned USB drive to boot into them, but I could never get it to boot automatically.
- I can install some 64 bit distributions with the only problem being that I have to manually tweak the partitioning.
- Mint LMDE 2
- SparkyLinux 4.2
- Debian Jessie 8.3
- Ubuntu 14.04LTS
The kernel configuration has a lot of effect on the latency. I tried the rtconfig.txt that was posted in this forum, but my computer won't reboot with it.
So I've been "rolling my own". Here are the changes I've made with Xconfig:
Processor type and features
Processor Family
Intel Atom (this one item halved the latency)
Preemption Model
Fully Preemptible Kernel (RT) - on
Timer frequency (n)
1000 Hz
Power manmakemakeagement and ACPI options
All options off under this heading
All subheadings off, except don't change ACPI (....)Support
Power management and ACPI options
turn off all but ACPI
Device Drivers (I don't think that these have a large effect, but I have not isolated and tested)
Dallas's 1-wire support - off (n)
Parallel port support - off
Multimedia support - off
Sound card support - off
Sony MemoryStick card support - off
Accessibility support - off
Virtualization drivers - off
Platform support for Chrome hardware - off
Industrial I/O support - off
Sound card disabled
Kernel hacking
all off, including that under main listing, except
Magic SysRq key on
In UEFI, I disabled the sound card.
I have a few questions:
- Is there anything else that I should try, either in UEFI or in Xconfig?
- I've seen a lot of discussion about what latency is needed. I'm running the Mesa 7i92 card, and use only the servo thread. Under []EMCMOT the parameter SERVO_PERIOD = 1,000,000. There is no BASE_PERIOD needed or set. What numbers should I be targeting when I check the latency? (I'm getting Servo 1ms spikes to 650,000)
Please Log in or Create an account to join the conversation.
( and all possible power management options are disabled in the BIOs )
650 usec latency spikes probably mean that you will need to run the servo thread at 500 or 750 Hz or so
to avoid occasional real time errors
Please Log in or Create an account to join the conversation.
- The eMMC drive was causing me a lot of grief. I bought a mSATA drive and installed it so I would not have to use the eMMC drive
- I put the Liva X in "Other OS" mode instead of "Windows 8". That makes it where it'll load a non-UEFI OS
- Installed the latest version of Debian Wheezy 32 bit
- Installed linuxcnc and the RT-PREEMPT kernel using
sudo apt-get install linuxcnc-uspace
deb http://linuxcnc.org/ wheezy base 2.7-uspace
3x glxgears, MP3 file playing, at end of 15 minutes
Max Jitter 32 bit (and 64 bit)
Servo Thread = 44013 (49296)
Base Thread = 38625 (49730)
Although it would not work with the Mesa 7i92 card, and has no parallel port, I loaded the live version of linuxcnc that already includes the RTAI kernel. I got great latency times. I didn't record the exact results, but this is close:
LinuxCNC Latency Test Results:
3x glxgears, MP3 file playing, at end of 15 minutes
Servo Thread = 2500
Base Thread = 6500
The only other change I made to the Liva X is that I'm using a USB network dongle so that I can have two networks, one at 192.168.1.x and the other at 10.10.10.x for the Mesa card.
Also, Wheezy does not support the Liva X's internal WiFi and Bluetooth. I found some drivers (rtlwifi-new-dkms linux-firmware rtl8723au-bt-dkms) that got them working, but the Latency numbers went through the roof. No big deal. I can get by fine without them.
I've already successfully cut a taper, an external thread, an internal thread, and a ball on the lathe.
Please Log in or Create an account to join the conversation.