在linux下如何安装ftdi_sio USB转串口驱动

时间:2021-10-23 16:10:38
各位好,本人刚刚接触Linux,现在要在Ubuntu下使用一个USB转串口线,但是系统上没有驱动,需要自己安装,现在不知道应该如何安装,想问一下应该如何安装才对。

我之前试着make了一下,但是提示有编译错误。我截图了两张,哪位知道谢谢! 在linux下如何安装ftdi_sio USB转串口驱动在linux下如何安装ftdi_sio USB转串口驱动

13 个解决方案

#1


什么usb转串口还需要安装驱动的?这么神奇?

一般的usb转串口都是pl2303, ch340的芯片,近几年的linux系统里都有相关的驱动了的。

楼主是不是搞错了?

#2


我用的是Ubuntu 16.04 LTS的系统,我用的是NVIDIA jetson TX2的板子,上面自带的linux
应该没有,我用modinfo usbserial看了没有这个模块
图片是用的USB转com 在linux下如何安装ftdi_sio USB转串口驱动

#3


Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。

#4


刚才在/lib/modules/4.4.15-tegre/bulild/include/下新建立一个链接asm,指向/lib/modules/4.4.15-tegre/bulild/include/linux/
编译往错误更多了都是下面的错误,能有挺多我就粘出来一小点,是驱动的问题吗
gcc -Wall -D__KERNEL__ -DMODULE -I/lib/modules/4.4.15-tegra/build/include -D__SMP__ -DSMP -I/usr/src/linux-4.4.15-tegra/drivers/usb/serial/ -O   -c -o ftdi_sio.o ftdi_sio.c
In file included from /lib/modules/4.4.15-tegra/build/include/uapi/linux/types.h:4:0,
                 from /lib/modules/4.4.15-tegra/build/include/linux/compiler.h:199,
                 from /lib/modules/4.4.15-tegra/build/include/linux/linkage.h:4,
                 from /lib/modules/4.4.15-tegra/build/include/linux/kernel.h:6,
                 from ftdi_sio.c:251:
/lib/modules/4.4.15-tegra/build/include/asm/types.h:12:9: error: unknown type name ‘__u32’
 typedef __u32 __kernel_dev_t;
         ^
/lib/modules/4.4.15-tegra/build/include/asm/types.h:14:9: error: unknown type name ‘__kernel_fd_set’
 typedef __kernel_fd_set  fd_set;
         ^
/lib/modules/4.4.15-tegra/build/include/asm/types.h:16:9: error: unknown type name ‘__kernel_ino_t’
 typedef __kernel_ino_t  ino_t;
         ^
/lib/modules/4.4.15-tegra/build/include/asm/types.h:17:9: error: unknown type name ‘__kernel_mode_t’

#5


引用 3 楼 jklinux 的回复:
Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白

#6


引用 5 楼 jacky198554 的回复:
Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*

#7


引用 6 楼 jklinux 的回复:
Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备

#8


引用 7 楼 jacky198554 的回复:
Quote: 引用 6 楼 jklinux 的回复:

Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备


你的内核有没有源码的?有的话直接make menuconfig直接配置

#9


引用 8 楼 jklinux 的回复:
Quote: 引用 7 楼 jacky198554 的回复:

Quote: 引用 6 楼 jklinux 的回复:

Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备


你的内核有没有源码的?有的话直接make menuconfig直接配置


引用 8 楼 jklinux 的回复:
Quote: 引用 7 楼 jacky198554 的回复:

Quote: 引用 6 楼 jklinux 的回复:

Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备


你的内核有没有源码的?有的话直接make menuconfig直接配置


注意点哦,设备文件应是/dev/ttyUSB0的, 你"ls  /dev/ttyUSB*"看下了

#10


应该在哪个文件夹make menuconfig啊,是在/usr/src/linux-headers-4.4.15-tegre/drivers/usb/serial中执行这个命令吗

#11


引用 10 楼 jacky198554 的回复:
应该在哪个文件夹make menuconfig啊,是在/usr/src/linux-headers-4.4.15-tegre/drivers/usb/serial中执行这个命令吗


这些目录里只有内核的目录及Makefile而已,没有.c, .h文件的。也就是没有内核源码文件的。 这样你可能得下一个4.4的内核源码了

#12


我还想问一下,如果插入usb转串口出现了/dev/ttyUSB*,这个出现的设备是usb设备还是串口设备啊

我可以直接想操作串口那样操作这个设备吗

#13


引用 12 楼 jacky198554 的回复:
我还想问一下,如果插入usb转串口出现了/dev/ttyUSB*,这个出现的设备是usb设备还是串口设备啊

我可以直接想操作串口那样操作这个设备吗


/dev/ttyUSB*就是串口转成usb转换器驱动产生的设备文件, 这个文件是表示usb端的接口。 通过操作这个设备文件就可以接收/发送串口数据了

#1


什么usb转串口还需要安装驱动的?这么神奇?

一般的usb转串口都是pl2303, ch340的芯片,近几年的linux系统里都有相关的驱动了的。

楼主是不是搞错了?

#2


我用的是Ubuntu 16.04 LTS的系统,我用的是NVIDIA jetson TX2的板子,上面自带的linux
应该没有,我用modinfo usbserial看了没有这个模块
图片是用的USB转com 在linux下如何安装ftdi_sio USB转串口驱动

#3


Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。

#4


刚才在/lib/modules/4.4.15-tegre/bulild/include/下新建立一个链接asm,指向/lib/modules/4.4.15-tegre/bulild/include/linux/
编译往错误更多了都是下面的错误,能有挺多我就粘出来一小点,是驱动的问题吗
gcc -Wall -D__KERNEL__ -DMODULE -I/lib/modules/4.4.15-tegra/build/include -D__SMP__ -DSMP -I/usr/src/linux-4.4.15-tegra/drivers/usb/serial/ -O   -c -o ftdi_sio.o ftdi_sio.c
In file included from /lib/modules/4.4.15-tegra/build/include/uapi/linux/types.h:4:0,
                 from /lib/modules/4.4.15-tegra/build/include/linux/compiler.h:199,
                 from /lib/modules/4.4.15-tegra/build/include/linux/linkage.h:4,
                 from /lib/modules/4.4.15-tegra/build/include/linux/kernel.h:6,
                 from ftdi_sio.c:251:
/lib/modules/4.4.15-tegra/build/include/asm/types.h:12:9: error: unknown type name ‘__u32’
 typedef __u32 __kernel_dev_t;
         ^
/lib/modules/4.4.15-tegra/build/include/asm/types.h:14:9: error: unknown type name ‘__kernel_fd_set’
 typedef __kernel_fd_set  fd_set;
         ^
/lib/modules/4.4.15-tegra/build/include/asm/types.h:16:9: error: unknown type name ‘__kernel_ino_t’
 typedef __kernel_ino_t  ino_t;
         ^
/lib/modules/4.4.15-tegra/build/include/asm/types.h:17:9: error: unknown type name ‘__kernel_mode_t’

#5


引用 3 楼 jklinux 的回复:
Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白

#6


引用 5 楼 jacky198554 的回复:
Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*

#7


引用 6 楼 jklinux 的回复:
Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备

#8


引用 7 楼 jacky198554 的回复:
Quote: 引用 6 楼 jklinux 的回复:

Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备


你的内核有没有源码的?有的话直接make menuconfig直接配置

#9


引用 8 楼 jklinux 的回复:
Quote: 引用 7 楼 jacky198554 的回复:

Quote: 引用 6 楼 jklinux 的回复:

Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备


你的内核有没有源码的?有的话直接make menuconfig直接配置


引用 8 楼 jklinux 的回复:
Quote: 引用 7 楼 jacky198554 的回复:

Quote: 引用 6 楼 jklinux 的回复:

Quote: 引用 5 楼 jacky198554 的回复:

Quote: 引用 3 楼 jklinux 的回复:

Linux内核从3.0以上都应有这驱动了。


  │ Symbol: USB_SERIAL_FTDI_SIO [=n]                                                                                                        │  
  │ Type  : tristate                                                                                                                        │  
  │ Prompt: USB FTDI Single Port Serial Driver                                                                                              │  
  │   Defined at drivers/usb/serial/Kconfig:153                                                                                             │  
  │   Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y]                                                                                       │  
  │   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                 │  
  │         -> USB Serial Converter support (USB_SERIAL [=y]) 



你现编的驱动代码可能是用于linux2.6版本的,但你现在的内核是4.4的了,版本差异大肯定不能直接编了。

也就是说你可以在你的内核源码里直接编这个usb转串口的驱动了。


还想问一下,在内核里怎么直接编译啊,我刚刚接触linux不太明白


你先接入usb转串口先, 然后查看下是否有这些文件: /dev/ttyUSB*


接入了没有/dev/ttyUSB这个设备


你的内核有没有源码的?有的话直接make menuconfig直接配置


注意点哦,设备文件应是/dev/ttyUSB0的, 你"ls  /dev/ttyUSB*"看下了

#10


应该在哪个文件夹make menuconfig啊,是在/usr/src/linux-headers-4.4.15-tegre/drivers/usb/serial中执行这个命令吗

#11


引用 10 楼 jacky198554 的回复:
应该在哪个文件夹make menuconfig啊,是在/usr/src/linux-headers-4.4.15-tegre/drivers/usb/serial中执行这个命令吗


这些目录里只有内核的目录及Makefile而已,没有.c, .h文件的。也就是没有内核源码文件的。 这样你可能得下一个4.4的内核源码了

#12


我还想问一下,如果插入usb转串口出现了/dev/ttyUSB*,这个出现的设备是usb设备还是串口设备啊

我可以直接想操作串口那样操作这个设备吗

#13


引用 12 楼 jacky198554 的回复:
我还想问一下,如果插入usb转串口出现了/dev/ttyUSB*,这个出现的设备是usb设备还是串口设备啊

我可以直接想操作串口那样操作这个设备吗


/dev/ttyUSB*就是串口转成usb转换器驱动产生的设备文件, 这个文件是表示usb端的接口。 通过操作这个设备文件就可以接收/发送串口数据了