어떤 커널 모듈이 USB 장치의 드라이버 역할을 하는지 어떻게 알 수 있나요?

어떤 커널 모듈이 USB 장치의 드라이버 역할을 하는지 어떻게 알 수 있나요?

저는 Ubuntu/x86에서 훌륭하게 실행되는 웹캠이 내장된 Acer 넷북을 가지고 있습니다. 나는 또한 예비 부품 공급원으로 수년간 과도하게 사용하면서 다양한 사고를 겪은 동일한 모델의 깨진 넷북을 많이 가지고 있습니다. 나는 Orange Pi를 구입했고 그 위에 작고 간단한 웹캠을 장착하고 싶었습니다. 화면 위의 좁은 스트립에 있는 것이 완벽한 크기이고 USB라는 것을 알고 있습니다(3.3에서 실행되는 특수 눈송이임에도 불구하고) V 그리고 USB5의 경우 표준이 아님) 하나를 추출하여 핀아웃을 찾아 Orange Pi의 USB 데이터, 3.3V 및 GND에 연결했는데 넷북에서와 마찬가지로 lsusb에서도 정상적으로 표시되었습니다.

Bus 001 Device 002: ID 04f2:b367 Chicony Electronics Co., Ltd 

이것이 내 모험이 난관에 부딪힌 곳입니다. 내 Pi 배포판에는 이 카메라를 지원하는 커널 모듈이 없는 것 같았습니다. 당연히 저는 Acer x86 넷북용으로 특별히 제작된 카메라를 ARM SBC에 연결하고 싶어하는 세계 최초의 사람일 것입니다. Intel 시스템 외부에서는 볼 수 없는 ARM 빌드에 하드웨어 드라이버를 추가하는 이유는 무엇입니까? lsmod는 비디오와 관련된 내용을 표시하지 않습니다. 그것이 어느 것인지 안다면 그것을 컴파일하고 관련 모듈을 추가할 수 있을 것입니다.

한편, 내 (작동 중인) 넷북의 lsusb에는 80개 이상의 모듈이 표시되는데, 그 중 대부분은 용도에 대해 아무 것도 알려주지 않는 이름을 가지고 있습니다.

   Module                  Size  Used by                                                                                                  
   option                 57344  0                                                                                                        
   huawei_cdc_ncm         16384  0                                                                                                        
   cdc_wdm                20480  1 huawei_cdc_ncm                                                                                         
   cdc_ncm                40960  1 huawei_cdc_ncm                                                                                         
   usb_wwan               20480  1 option                                                                                                 
   usbnet                 45056  2 cdc_ncm,huawei_cdc_ncm                                                                                 
   usbserial              45056  2 usb_wwan,option                                                                                        
   uas                    24576  0                                                                                                        
   usb_storage            69632  1 uas                                                                                                    
   binfmt_misc            20480  1                                                                                                        
   ccm                    20480  6                                                                                                        
   snd_hrtimer            16384  1                                                                                                        
   wl                   6447104  0                                                                                                        
   snd_hda_codec_realtek   110592  1                                                                                                      
   snd_hda_codec_generic    73728  1 snd_hda_codec_realtek                                                                                
   snd_hda_codec_hdmi     49152  1                                                                                                        
   uvcvideo               90112  0                                                                                                        
   videobuf2_vmalloc      16384  1 uvcvideo                                                                                               
   snd_hda_intel          45056  3                                                                                                        
   videobuf2_memops       16384  1 videobuf2_vmalloc
   videobuf2_v4l2         24576  1 uvcvideo
   videobuf2_core         40960  2 videobuf2_v4l2,uvcvideo
   videodev              188416  3 videobuf2_core,videobuf2_v4l2,uvcvideo
   snd_hda_codec         126976  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
   media                  40960  2 videodev,uvcvideo
   snd_hda_core           81920  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
   snd_hwdep              20480  1 snd_hda_codec
   intel_powerclamp       16384  0
   snd_pcm                98304  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
   arc4                   16384  2
   coretemp               16384  0
   ath9k                 155648  0
   ath9k_common           36864  1 ath9k
   snd_seq_midi           16384  0
   ath9k_hw              471040  2 ath9k_common,ath9k
   snd_seq_midi_event     16384  1 snd_seq_midi
   input_leds             16384  0
   acer_wmi               20480  0
   joydev                 24576  0
   sparse_keymap          16384  1 acer_wmi
   ath                    32768  3 ath9k_common,ath9k,ath9k_hw
   serio_raw              16384  0
   wmi_bmof               16384  0
   mac80211              786432  1 ath9k
   rtsx_pci_ms            20480  0
   memstick               16384  1 rtsx_pci_ms
   snd_rawmidi            32768  1 snd_seq_midi
   snd_seq                65536  3 snd_seq_midi,snd_seq_midi_event
   lpc_ich                24576  0
   cfg80211              634880  5 wl,ath9k_common,ath9k,ath,mac80211
   snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
   snd_timer              32768  3 snd_seq,snd_hrtimer,snd_pcm
   mac_hid                16384  0
   snd                    81920  18 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
   soundcore              16384  1 snd
   shpchp                 36864  0
   sch_fq_codel           20480  2
   cuse                   16384  3
   parport_pc             32768  0
   ppdev                  20480  0
   lp                     20480  0
   parport                49152  3 parport_pc,lp,ppdev
   ip_tables              28672  0
   x_tables               40960  1 ip_tables
   autofs4                40960  2
   rtsx_pci_sdmmc         24576  0
   gma500_gfx            184320  2
   i2c_algo_bit           16384  1 gma500_gfx
   drm_kms_helper        172032  1 gma500_gfx
   syscopyarea            16384  1 drm_kms_helper
   sysfillrect            16384  1 drm_kms_helper
   psmouse               151552  0
   sysimgblt              16384  1 drm_kms_helper
   ahci                   40960  2
   fb_sys_fops            16384  1 drm_kms_helper
   libahci                32768  1 ahci
   drm                   401408  4 drm_kms_helper,gma500_gfx
   r8169                  86016  0
   rtsx_pci               69632  2 rtsx_pci_sdmmc,rtsx_pci_ms
   mii                    16384  2 r8169,usbnet
   wmi                    24576  2 acer_wmi,wmi_bmof
   video                  45056  2 acer_wmi,gma500_gfx

적합한 사람을 어떻게 찾을 수 있나요?

답변1

공급업체 ID "04f2"에 대한 커널 소스 코드를 검색한 다음 제품 ID "b367"로 필터링할 수 있습니다. 공급업체 ID가 포함된 2개의 비디오 파일을 찾았습니다.zr364xx 변형 c버전 6 커널에는 더 이상 존재하지 않습니다. 특정 제품 ID가 있는 파일이 없습니다. 다른 편집을 시도해 볼 수 있습니다.uvc_driver.c구조 항목을 복사 /* Chicony CNF7129 (Asus EEE 100HE) */하고 제품 ID를 변경하여 파일을 만든 다음 모듈을 다시 컴파일하십시오.

답변2

modinfo특정 커널 모듈을 사용하여 어떤 장치에서 작동하는지 알아낼 수 있습니다. 예를 들어 이렇게 하면 sudo modinfo uvcvideo특정 USB 장치에 대한 USB 클래스 및 모드 목록이 표시됩니다. 이 형식을 설명하는 커널 문서가 어딘가에 있습니다.

이 패턴을 특정 USB 장치의 작업에서 얻을 수 있는 결과와 lsusb -v비교하세요 .

또한 USB 트리에서 특정 장치를 실행 lsusb -t한 다음 찾아보고 심볼릭 링크를 따라 로드된 모듈을 확인할 수도 있습니다./sys/bus/usb/devices/driver

마지막으로 udevadm다양한 방법 으로 man udevadm유사한 정보를 얻을 수 있습니다(참고자료 참조).

내 생각엔 당신의 카메라가 에 의해 처리되는 것 같은데 uvcvideo, Orange Pi에서 처리되지 않는다는 것은 조금 놀랍습니다...

관련 정보