Ubuntu编译ftdi_sio

为了解决Ubuntu插入FTDI设备可能出现没有ttyUSB*设备的问题。可以通过命令看一下结果:

dmesg | grep usb

 例如发现错误:

ftdi_sio: Unknown symbol usb_serial_handle_sysrq_char (err -2)

这种错误有可能是因为模块是为不同版本的内核编译的,或者内核中缺失了模块所依赖的某些功能。

1. 确认内核版本

运行命令: uname -r查看内核版本信息。

2. 下载ftdi_sio

下面的网站下载对应内核版本的ftdi_sio.c、ftdi_sio.h和ftdi_sio_ids.h。

serial - drivers/usb/serial - Linux source code (v5.4.270) - Bootlin

3. makefile

在同目录内新建一个makefile文件

ifeq ($(KERNELRELEASE), )
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
default:
	$(MAKE) -C $(KERNELDIR)  M=$(PWD)  
clean:
	rm -rf *.mk .tmp_versions Module.symvers *.mod.c *.o *.ko .*.cmd Module.markers modules.order *.a *.mod
load:
	insmod ftdi_sio.ko
unload:
	rmmod ftdi_sio
install: default
	rmmod ftdi_sio || true
	insmod ftdi_sio.ko || true
	mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/ || true
	cp -f ./ftdi_sio.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/ || true
	depmod -a
uninstall:
	rmmod ftdi_sio || true
	rm -rf /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/ftdi_sio.ko || true
	depmod -a
else
	obj-m := ftdi_sio.o
endif

4. 编译

sudo make clean
sudo make
sudo make install

5. 添加新的PID

对于一些老的内核和新的FTDI芯片,可能需要把新的pid添加到ftdi_sio驱动中。

echo 0403 6048 >/sys/bus/usb-serial/drivers/ftdi_sio/new_id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值