linux - USB调制解调器的交叉编译驱动程序

标签 linux linux-kernel driver cross-compiling embedded-linux

我有一张带有运行 Linux 的 IMX6 CPU 的物理卡(我从制造商网站的源代码编译的内核)。我还有一个 USB 蜂窝调制解调器加密狗,我想与该卡一起使用。然而,当我将加密狗插入卡中时,我在 dmesg 中得到了这个:

[   29.825491] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[   29.983396] usb-storage 1-1:1.0: USB Mass Storage device detected
[   29.991796] scsi0 : usb-storage 1-1:1.0
[   30.987573] scsi 0:0:0:0: Direct-Access     ALCATEL  Mass Storage     2.31 PQ: 0 ANSI: 2
[   30.996027] scsi 0:0:0:1: CD-ROM            ALCATEL  Mass Storage     2.31 PQ: 0 ANSI: 2
[   31.008487] sd 0:0:0:0: [sda] Attached SCSI removable disk

看起来 Linux 将该设备识别为大容量存储设备(它兼作存储设备),而不是调制解调器。当我将同一个加密狗插入普通的 Ubuntu 机器时,我得到了这个:

[264822.947101] usb 1-5: new high-speed USB device number 12 using ehci-pci
[264823.086874] usb 1-5: New USB device found, idVendor=1bbb, idProduct=0017
[264823.086880] usb 1-5: New USB device strings: Mfr=3, Product=2, SerialNumber=[REDACTED]
[264823.086883] usb 1-5: Product: HSPA Data Card
[264823.086886] usb 1-5: Manufacturer: USBModem
[264823.086888] usb 1-5: SerialNumber: [REDACTED]
[264823.089483] option 1-5:1.0: GSM modem (1-port) converter detected
[264823.089685] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB1
[264823.089816] option 1-5:1.1: GSM modem (1-port) converter detected
[264823.090019] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB2
[264823.090150] option 1-5:1.2: GSM modem (1-port) converter detected
[264823.090311] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB3
[264823.090433] option 1-5:1.3: GSM modem (1-port) converter detected
[264823.090574] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB4
[264823.090666] usb-storage 1-5:1.4: USB Mass Storage device detected
[264823.090916] scsi host16: usb-storage 1-5:1.4
[264823.091067] option 1-5:1.5: GSM modem (1-port) converter detected
[264823.091133] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB5
[264824.089843] scsi 16:0:0:0: Direct-Access     ALCATEL  Mass Storage     2.31 PQ: 0 ANSI: 2
[264824.090238] sd 16:0:0:0: Attached scsi generic sg2 type 0
[264824.093552] sd 16:0:0:0: [sdb] Attached SCSI removable disk

我知道如何通过在 menuconfig 中选择它们来在外部和内核中编译模块。但是,我不知道我应该为这个设备编译哪些模块,如果它们包含在内核源代码中的话。我如何找到要编译的模块/驱动程序?

最佳答案

USB 调制解调器通常作为大容量存储设备启动,以允许安装驱动程序。

您可以使用 USB_ModeSwitch 等软件强制它改变模式。 (这可能已经安装并在您的 Ubuntu 系统上运行)

如果做不到这一点,许多人会在弹出存储空间时切换模式(如通过 eject)。

关于linux - USB调制解调器的交叉编译驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35827772/

相关文章:

linux - 如何找到某个命令的目录?

c - 在内核程序中获取 root 用户 id 并与当前用户 id 进行比较

linux - 如何自定义或删除启动时显示的额外 Linux 内核版本详细信息?

jsf - 无法在 Tomcat 7 上的 JSF 应用程序中加载 Oracle JDBC 驱动程序

c - 使用 DeviceIoControl 从应用程序向驱动程序发送数据

android - 问题访问/dev/mem 和/dev/kmem

php - 如何将基于 CSS3 的 HTML 转换为图像

c - 学习 Linux 内核

android - 如何在 Linux 平台上管理 mmap 的内存使用?

Linux 内核 : udelay() returns too early?