I picked up a LulzBot Mini this week. The printer’s specs and price point finally pushed me into getting one. It requires a computer with USB to be able to drive it (there is no screen or SD slot.) I rather like this because it means the interface can be what I want. After using it enough with my laptop that I was confident in taking the next step, I went looking around for smaller systems.
I had an Arndale Octa with Linaro laying about being unused. The Octa is a really interesting board that I originally got for playing around with OpenCL and USB 3 on an ARM Cortex-A15. While it only has 1 USB port, it has a lot more computing power than the Pis that are usually used. I followed the guide to install OctoPrint on Raspian (since it is similar enough to a generic Debian install,) but when all was told, I plugged the printer in, connected to the web interface, went to select the serial port….and nothing.
Here it turns out the bog standard Linaro builds don’t include the CDC-ACM module.
No problem, it’s easy enough to build a kernel module.
First find the kernel version you’re using with the command “uname -r”
I was on 3.15, which is fairly recent, so I went straight to the Linux kernel repo on github and found the folder that contained the module of interest.
Make a new folder on the Arndale and wget cdc-acm.c cdc-acm.m from the repo. Then create a Makefile that contains:
obj-m += cdc-acm.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
(Cut and paste may make things fail. If you get errors in the next step, just type it out)
Make sure you have the needed packages to build from apt (they were already on mine)
apt-get install linux-headers-$(uname -r) build-essential
Then you should just be able to type “make” and things should go. Once it’s done there should be a cdc-acm.ko in the folder. Try to use “sudo insmod cdc-acm.ko” and the printer should show up!
I have tried to compile the cdc_acm module following your steps.
Did you also have the compile error:
error: implicit declaration of function ‘smp_mb__before_atomic’ [-Werror=implicit-function-declaration]
Which version of Linaro were you using? I found some to be a lot more stable than others, will update mine with the newest and see if I still have similar problems.