Peak Linux driver installation error on Ubuntu 20.04

This forum covers PCAN-Linux and Linux development issues concerning our products
Post Reply
vince_headache
Posts: 3
Joined: Wed 14. Jan 2026, 23:16

Peak Linux driver installation error on Ubuntu 20.04

Post by vince_headache » Thu 15. Jan 2026, 23:20

Hello!

New to the PEAK/PCAN ecosystem. Following the instructions for driver installation found in the Documentation file posted here: https://www.peak-system.com/fileadmin/m ... roproetary
I have gotten to section 3.2, Install package, and have hit the following error:

Code: Select all

(base) vince@user-xps:~/peak-linux-driver-8.20.0$ sudo make install
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/driver'
mkdir -p /usr/local/bin
cp -f udev/pcan_usb_minor_check.bash /usr/local/bin
chmod 744 /usr/local/bin/pcan_usb_minor_check.bash
cp -f udev/45-pcan.rules /etc/udev/rules.d
Info: Copied 45-pcan.rules to /etc/udev/rules.d.
cp -f udev/blacklist-peak.conf /etc/modprobe.d
chmod 644 /etc/modprobe.d/blacklist-peak.conf
Info: mainline drivers removed and blacklisted in
      /etc/modprobe.d/blacklist-peak.conf
udevadm control --reload-rules
make[1]: *** No rule to make target 'pcan.ko', needed by 'install_module'.  Stop.
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/driver'
make: *** [Makefile:98: install] Error 2
Does anyone know how to deal with this error? I really appreciate any help!

M.Maidhof
Support
Support
Posts: 1770
Joined: Wed 22. Sep 2010, 14:00

Re: Peak Linux driver installation error on Ubuntu 20.04

Post by M.Maidhof » Mon 19. Jan 2026, 09:38

Hi,

please do the following steps:

make clean
make
sudo make install
cat /proc/pcan

and send us the output of all commands to see if there are any problems.

regards

Michael

vince_headache
Posts: 3
Joined: Wed 14. Jan 2026, 23:16

Re: Peak Linux driver installation error on Ubuntu 20.04

Post by vince_headache » Tue 20. Jan 2026, 16:47

Hi Michael,

Thanks for your response! I have posted the full output at the bottom of this message.

Looks to me like "make clean" runs ok, and "make" is where the problems start:

Code: Select all

 
 src/pcan-settings.c:47:10: fatal error: popt.h: No such file or directory
   47 | #include <popt.h>
      |          ^~~~~~~~
compilation terminated.
make[1]: *** [Makefile:196: pcan-settings] Error 1
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/test'
make: *** [Makefile:84: all] Error 2
I'm not sure where popt.h is supposed to come from, or why I don't have it. Perhaps the other errors are downstream of this. I went ahead and ran all commands after the error, in case there's more useful information. Really appreciate your help.

Here's the full output:

Code: Select all

(base) vince@user-xps:~/peak-linux-driver-8.20.0$ make clean
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/driver'
rm -f src/*.o src/*~ src/.*cmd *.o .*.o *.ko *~ .*cmd  pcan.mod.c Module.symvers modules.order .cache.mk pcan.mod
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/driver'
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/lib'
rm -f src/*~
rm -rf obj lib obj32 lib32
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/lib'
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/test'
rm -f src/*~ src/*.o *~ receivetest transmitest bitratetest filtertest pcanfdtst pcan-settings receivetest_posix transmitest_posix
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/test'
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic'

***
*** Processing 'pcanbasic' directory...
***
make[2]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic'

***
*** Cleaning PCANBasic library...
***
rm -f src/*~ out/*.o out/*.gcno *~ *.so.* *.so lib/*~ lib/*.so.* lib/*.so lib32/*~ lib32/*.so.* lib32/*.so out32/*.o out32/*.gcno
make[2]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic'

***
*** Processing 'pcaninfo' directory...
***
make[2]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/pcaninfo'

***
*** Cleaning pcaninfo...
***
rm -f src/*~ src/*.o ../pcanbasic/src/*~ ../pcanbasic/src/*.o *~ *.so.* *.so pcaninfo.1.4.0 pcaninfo
make[2]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/pcaninfo'

***
*** Processing 'examples' directory...
***
make[2]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples'

***
*** Processing 'C' directory (console examples)...
***
make[3]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/c'

***
*** Cleaning PCANBasic C examples
rm -f src/*~ src/*.o *~ pcanwrite pcanread pcaneventread pcaneventwrite
make[3]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/c'

***
*** Processing 'NativeC++' directory (console examples)...
***
make[3]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++'

***
*** Cleaning PCANBasic C++ examples...
***
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/01_LookUpChannel'
rm -f *.o *~ ../LookUpChannel
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/01_LookUpChannel'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/02_GetSetParameter'
rm -f *.o *~ ../GetSetParameter
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/02_GetSetParameter'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/03_ManualRead'
rm -f *.o *~ ../ManualRead
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/03_ManualRead'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/04_ManualWrite'
rm -f *.o *~ ../ManualWrite
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/04_ManualWrite'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/05_TimerRead'
rm -f *.o *~ ../TimerRead
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/05_TimerRead'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/06_TimerWrite'
rm -f *.o *~ ../TimerWrite
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/06_TimerWrite'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/07_ThreadRead'
rm -f *.o *~ ../ThreadRead
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/07_ThreadRead'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/08_EventDrivenRead'
rm -f *.o *~ ../EventDrivenRead
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/08_EventDrivenRead'
make[4]: Entering directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/09_TraceFiles'
rm -f *.o *~ ../TraceFiles
make[4]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/09_TraceFiles'
make[3]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++'
make[2]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic/examples'
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/libpcanbasic'


(base) vince@user-xps:~/peak-linux-driver-8.20.0$ make
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/driver'
***
*** Making pcan driver in chardev mode
***
*** Host OS Release=Ubuntu v20.04
*** Host machine kernel version=5.15.0-139-generic
*** Driver kernel version=5.15.0-139-generic (5.15.0)
*** Path to kernel sources=/usr/src/linux-headers-5.15.0-139-generic
*** use KBUILD=yes
*** use DKMS=
*** gcc version=9
*** gcc versions detected on this host:
*** /usr/bin/gcc-9
***
make -C /usr/src/linux-headers-5.15.0-139-generic  EXTRA_CFLAGS="-I/home/vince/peak-linux-driver-8.20.0/driver -DNO_DEBUG -DMODVERSIONS -DNO_PARPORT_SUBSYSTEM -DUSB_SUPPORT -DPCI_SUPPORT -DPCIEC_SUPPORT -DISA_SUPPORT -DNO_DONGLE_SUPPORT -DNO_PCCARD_SUPPORT -DNO_NETDEV_SUPPORT -DNO_RT   -Wno-date-time" V=0 modules M=/home/vince/peak-linux-driver-8.20.0/driver
make[2]: Entering directory '/usr/src/linux-headers-5.15.0-139-generic'
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_main.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_fops.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_fifo.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_filter.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_parse.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_sja1000.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_common.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_timing.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcanfd_core.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcanfd_ucan.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_usb_core.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_usb.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_usbpro.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcanfd_usb.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_pci.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcanfd_pci.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_pci_spi.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_pciec.o
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/src/pcan_isa.o
  LD [M]  /home/vince/peak-linux-driver-8.20.0/driver/pcan.o
  MODPOST /home/vince/peak-linux-driver-8.20.0/driver/Module.symvers
  CC [M]  /home/vince/peak-linux-driver-8.20.0/driver/pcan.mod.o
  LD [M]  /home/vince/peak-linux-driver-8.20.0/driver/pcan.ko
  BTF [M] /home/vince/peak-linux-driver-8.20.0/driver/pcan.ko
Skipping BTF generation for /home/vince/peak-linux-driver-8.20.0/driver/pcan.ko due to unavailability of vmlinux
make[2]: Leaving directory '/usr/src/linux-headers-5.15.0-139-generic'
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/driver'
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/lib'
***
*** Making pcan libraries
***
*** gcc version: 9
***
gcc -DNO_RT -I. -I../driver -fPIC -Wall -Wcast-align -Wredundant-decls  -DPCANFD_OLD_STYLE_API -c src/libpcan.c -o obj/libpcan.o
gcc -shared -Wl,-soname,libpcan.so -o lib/libpcan.so.6 obj/libpcan.o 
cd lib/; ln -sf libpcan.so.6 libpcan.so
gcc -DNO_RT -I. -I../driver -fPIC -Wall -Wcast-align -Wredundant-decls  -DPCANFD_OLD_STYLE_API -c src/libpcanfd.c -o obj/libpcanfd.o
gcc -shared -Wl,-soname,libpcanfd.so -o lib/libpcanfd.so.8 obj/libpcanfd.o 
cd lib/; ln -sf libpcanfd.so.8 libpcanfd.so
ar rcs lib/libpcanfd.a obj/libpcanfd.o

Info: only 64-bit version of libpcan can be built. 32-bit version of libpcan can't because the 32-bit version of libc seems not being installed...

make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/lib'
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/test'
***
*** Making example and test programs
***
*** gcc version: 9
***
gcc -DNO_RT -I. -I../lib -I../driver  -g src/receivetest.c src/common.c -lpcanfd  -L../lib/lib -Wl,-rpath ../lib/lib -o receivetest
g++ -DNO_RT -I. -I../lib -I../driver  -g src/transmitest.cpp src/common.c src/parser.cpp -lstdc++ -lpcanfd  -L../lib/lib -Wl,-rpath ../lib/lib -o transmitest
gcc -DNO_RT -I. -I../lib -I../driver  -g src/bitratetest.c src/common.c -lpcanfd  -L../lib/lib -Wl,-rpath ../lib/lib -o bitratetest
g++ -DNO_RT -I. -I../lib -I../driver  -g src/filtertest.cpp src/common.c -lstdc++ -lpcanfd  -L../lib/lib -Wl,-rpath ../lib/lib -o filtertest
gcc -DNO_RT -I. -I../lib -I../driver  -g src/pcanfdtst.c -lpcanfd  -L../lib/lib -Wl,-rpath ../lib/lib -lpthread -o pcanfdtst
gcc -DNO_RT -I. -I../lib -I../driver  -g src/pcan-settings.c -lpopt -lpcanfd  -L../lib/lib -Wl,-rpath ../lib/lib -g -o pcan-settings
src/pcan-settings.c:47:10: fatal error: popt.h: No such file or directory
   47 | #include <popt.h>
      |          ^~~~~~~~
compilation terminated.
make[1]: *** [Makefile:196: pcan-settings] Error 1
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/test'
make: *** [Makefile:84: all] Error 2

(base) vince@user-xps:~/peak-linux-driver-8.20.0$ sudo make install
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/driver'
Info: Left current 'pcan'-entry in /etc/modprobe.d/pcan.conf untouched.
mkdir -p /usr/local/bin
cp -f udev/pcan_usb_minor_check.bash /usr/local/bin
chmod 744 /usr/local/bin/pcan_usb_minor_check.bash
cp -f udev/45-pcan.rules /etc/udev/rules.d
Info: Copied 45-pcan.rules to /etc/udev/rules.d.
cp -f udev/blacklist-peak.conf /etc/modprobe.d
chmod 644 /etc/modprobe.d/blacklist-peak.conf
Info: mainline drivers removed and blacklisted in
      /etc/modprobe.d/blacklist-peak.conf
udevadm control --reload-rules
- manually installing pcan under /lib/modules/5.15.0-139-generic/misc...
mkdir -p /lib/modules/5.15.0-139-generic/misc
cp -f pcan.ko /lib/modules/5.15.0-139-generic/misc/pcan.ko
- Building dependencies...
depmod 5.15.0-139-generic
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/driver'
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/lib'
mkdir -p /usr/lib
cp -d lib/* /usr/lib
if [ -d lib32 ]; then \
	mkdir -p /usr/lib32; \
	cp -d lib32/* /usr/lib32; \
fi
mkdir -p /usr/include
chmod 644 libpcan.h libpcanfd.h
cp libpcan.h libpcanfd.h /usr/include
/sbin/ldconfig
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/lib'
make[1]: Entering directory '/home/vince/peak-linux-driver-8.20.0/test'
cp receivetest transmitest bitratetest filtertest pcanfdtst pcan-settings receivetest_posix transmitest_posix /usr/local/bin
cp: cannot stat 'pcan-settings': No such file or directory
cp: cannot stat 'receivetest_posix': No such file or directory
cp: cannot stat 'transmitest_posix': No such file or directory
make[1]: *** [Makefile:211: install] Error 1
make[1]: Leaving directory '/home/vince/peak-linux-driver-8.20.0/test'
make: *** [Makefile:99: install] Error 2

(base) vince@user-xps:~/peak-linux-driver-8.20.0$ cat /proc/pcan
cat: /proc/pcan: No such file or directory


vince_headache
Posts: 3
Joined: Wed 14. Jan 2026, 23:16

Re: Peak Linux driver installation error on Ubuntu 20.04

Post by vince_headache » Tue 20. Jan 2026, 20:14

Update--- I used "sudo apt-get install libpopt-dev" to install popt. Now "make" and "sudo make install" run without errors, but "cat /proc/pcan" givest the error

Code: Select all

 /proc/pcan: No such file or directory 
Do I need to manually add a /proc/pcan directory?

G.Lang
Support
Support
Posts: 192
Joined: Wed 22. Sep 2010, 14:58

Re: Peak Linux driver installation error on Ubuntu 20.04

Post by G.Lang » Wed 21. Jan 2026, 07:37

Please load the driver with "sudo modprobe pcan" or reboot your PC so that the driver will be loaded automatically.

Post Reply