usbserial 관련 내용은 우분투에서 수년 동안 너무 잘 작동해서 문제 해결 방법을 거의 잊어버렸습니다. 그러나 방금 Chrubuntu를 설치했는데 이제 USB 직렬 포트가 마술처럼 작동하는 것이 아닙니다.
다음은 귀하에게 필요하다고 생각되는 정보입니다.
uname -a
Linux ChrUbuntu 3.4.0 #1 SMP Sun Aug 26 19:17:55 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
저는 일반적으로 cp210x 드라이버를 보고 싶습니다. (아래에서 볼 수 있듯이 modprobe는 이를 로드하지 않는 것 같습니다.)
root@ChrUbuntu:/lib/modules/3.4.0/kernel/drivers/usb/serial# ls
option.ko pl2303.ko qcserial.ko sierra.ko usb_wwan.ko
LSSB
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 04ca:3006 Lite-On Technology Corp.
Bus 001 Device 004: ID 064e:d251 Suyin Corp.
Bus 002 Device 003: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x Composite Device
정보
[ 649.111665] usb 2-1.3: new full-speed USB device number 3 using ehci_hcd
[ 649.199149] usb 2-1.3: New USB device found, idVendor=10c4, idProduct=ea60
[ 649.199161] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 649.199169] usb 2-1.3: Product: CP2103 USB to UART Bridge Controller
[ 649.199175] usb 2-1.3: Manufacturer: Silicon Labs
[ 649.199179] usb 2-1.3: SerialNumber: 0001
장치 연결을 끊으면 dmesg에 새로운 정보 줄이 기록됩니다.
[ 2858.730137] usb 2-1.3: USB disconnect, device number 3
lsmod
Module Size Used by
fuse 59885 2
rfcomm 25259 0
snd_hda_codec_hdmi 29062 1
snd_hda_codec_realtek 49177 1
memconsole 12352 0
snd_hda_intel 24601 3
snd_hda_codec 71435 3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep 12351 1 snd_hda_codec
ath9k 118119 0
uvcvideo 59368 0
videodev 81368 1 uvcvideo
snd_pcm 61468 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
videobuf2_core 25280 1 uvcvideo
videobuf2_vmalloc 12313 1 uvcvideo
videobuf2_memops 12475 1 videobuf2_vmalloc
mac80211 318094 1 ath9k
ath9k_common 12689 1 ath9k
ath9k_hw 351731 2 ath9k,ath9k_common
sdhci_pci 16409 0
sdhci 25037 1 sdhci_pci
ath 21105 3 ath9k,ath9k_common,ath9k_hw
mmc_core 71579 2 sdhci_pci,sdhci
btusb 16409 0
joydev 16409 0
nm10_gpio 12313 0
tg3 118809 0
snd_timer 21055 1 snd_pcm
snd_page_alloc 12757 2 snd_hda_intel,snd_pcm
bluetooth 143138 13 rfcomm,btusb
cfg80211 141223 3 ath9k,mac80211,ath
rtc_cmos 16409 0
내 CP210x 드라이버에 필요한 모듈이 usbserial이라고 가정하고 다음을 시도했습니다.
root@ChrUbuntu:/# modprobe usbserial
root@ChrUbuntu:/#
root@ChrUbuntu:/# lsmod | grep usbserial
root@ChrUbuntu:/#
예상되는 /dev/ttyUSB0 누락(modprobe usbserial 시도 전후):
root@ChrUbuntu:/dev#ls
agpgart ecryptfs loop4 port sda2 tpm0 tty19 tty30 tty42 tty54 tty9 vcs6
block fb0 loop5 ppp sda3 tty tty2 tty31 tty43 tty55 uinput vcs7
bsg fd loop6 ptmx sda4 tty0 tty20 tty32 tty44 tty56 urandom vcsa
bus full loop7 pts sda5 tty1 tty21 tty33 tty45 tty57 usbmon0 vcsa1
char fuse loop-control random sda6 tty10 tty22 tty34 tty46 tty58 usbmon1 vcsa2
chromeos-low-mem hpet mapper rfkill sda7 tty11 tty23 tty35 tty47 tty59 usbmon2 vcsa3
console input mcelog rtc sda8 tty12 tty24 tty36 tty48 tty6 v4l vcsa4
core kmsg mem rtc0 sda9 tty13 tty25 tty37 tty49 tty60 vcs vcsa5
cpu log net sda shm tty14 tty26 tty38 tty5 tty61 vcs1 vcsa6
cpu_dma_latency loop0 network_latency sda1 snd tty15 tty27 tty39 tty50 tty62 vcs2 vcsa7
disk loop1 network_throughput sda10 stderr tty16 tty28 tty4 tty51 tty63 vcs3 video0
dm-0 loop2 null sda11 stdin tty17 tty29 tty40 tty52 tty7 vcs4 zero
dri loop3 nvram sda12 stdout tty18 tty3 tty41 tty53 tty8 vcs5
저는 일반적으로 이와 같은 udev 규칙을 사용하고, 이제 관심 있는 장치의 포트로 ttyUSB0을 사용하겠습니다. 분명히 지금처럼 ttyUSB*가 없으면 작동하지 않습니다.
KERNEL=="ttyUSB[0-9]*", DRIVERS=="cp210x", ATTRS{interface}=="CP2103 USB to UART Bridge Controller", MODE="0666", NAME:="ttyUSB0"
KERNEL=="ttyUSB[0-9]*", DRIVERS=="pl2303", SUBSYSTEMS=="usb-serial", MODE="0666", NAME:="ttyUSB1"
분명히 해결책은 커널 모듈 usbserial.ko 및 cp210x.ko를 구축하는 것입니다. 그러나 ChrUbuntu는 Ubuntu 12.04를 기반으로 하지만 3.4 커널을 사용합니다. ChrUbuntu에서 모듈을 빌드하는 데 필요한 모든 변수를 파악할 수 없는 것 같습니다.
답변1
cp210x.ko
커널 모듈이 디렉토리에 없습니다 :usbserial.ko
/lib/modules/`uname -r`/kernel/drivers/usb/serial/
ChrUbuntu 버전은 이러한 기능을 활성화하지 않고 컴파일된 커널과 함께 제공되는 것으로 보입니다.
OP 질문에 제공된 출력을 Ubuntu 12.10과 비교하면 다음을 지원하는 것으로 보입니다.
Chr우분투
root@ChrUbuntu:/lib/modules/3.4.0/kernel/drivers/usb/serial# ls
option.ko pl2303.ko qcserial.ko sierra.ko usb_wwan.ko
우분투12.10
$ ls /lib/modules/`uname -r`/kernel/drivers/usb/serial/
aircable.ko empeg.ko ipaq.ko mct_u232.ko option.ko sierra.ko visor.ko
ark3116.ko f81232.ko ipw.ko metro-usb.ko oti6858.ko spcp8x5.ko vivopay-serial.ko
belkin_sa.ko ftdi_sio.ko ir-usb.ko mos7720.ko pl2303.ko ssu100.ko whiteheat.ko
ch341.ko funsoft.ko iuu_phoenix.ko mos7840.ko qcaux.ko symbolserial.ko zio.ko
cp210x.ko garmin_gps.ko keyspan.ko moto_modem.ko qcserial.ko ti_usb_3410_5052.ko
cyberjack.ko hp4x.ko keyspan_pda.ko navman.ko quatech2.ko usb_debug.ko
cypress_m8.ko io_edgeport.ko kl5kusb105.ko omninet.ko safe_serial.ko usbserial.ko
digi_acceleport.ko io_ti.ko kobil_sct.ko opticon.ko siemens_mpi.ko usb_wwan.ko
따라서 cp210x.ko
소스에서 커널 모듈을 빌드한 다음 수동으로 설치해야 합니다.
Unix 및 Linux라는 제목의 Q&A를 참조하세요.Ubuntu make가 실패했습니다. 해당 파일이나 디렉터리가 없습니다. /lib/modules/3.4.0/build, 이 작업을 수행하는 방법에 대한 자세한 내용을 참조하세요.