2.6.32.9 코어가 내장된 Parrot AR Drone 2.0의 4G 모뎀

2.6.32.9 코어가 내장된 Parrot AR Drone 2.0의 4G 모뎀

커널 2.6.32를 기반으로 하는 Parrot AR Drone 2.0에 임베디드 Linux/BusyBox를 설치하기 위해 Huawei E3276 USB LTE 모뎀에 대한 지원을 컴파일하려고 합니다. 그러나 커널 모듈을 로드한 후 몇 가지 문제가 발생합니다.

먼저 필요한 커널 모듈을 로드합니다.

  • USB 네트워크,
  • 질병통제예방센터-ACM,
  • CDC_하위 집합,
  • CDC_이더리움,
  • 정보산업부,
  • USB 직렬 포트

모뎀은 이더넷 NIC처럼 작동하여 라우팅된 인터페이스(포트에서 192.168.1.100)를 제공하므로 모든 실제 4G 설정은 웹 인터페이스를 통해 모뎀 자체에서 수행됩니다(왜 드라이버를 eth포함하지 않았는지 궁금하시다면 qmi_wwan).

dmesg그런 다음 및 에 다음 항목이 나타날 때까지 4G 모뎀을 연결했습니다 lsusb.

lsusb:

Bus 001 Device 002: ID 12d1:1f01 Huawei Technologies Co., Ltd.

dmesg:

scsi8 : SCSI emulation for USB Mass Storage devices
usb 1-1: uevent
usb-storage: device found at 12
usb-storage: waiting for device to settle before scanning
/home/stephane/.ardrone/linux/ardrone2_ARDrone2_Version_20130102/Linux/kernel/omap/drivers/usb/core/inode.c: creating file '012'
hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
hub 1-0:1.0: port 1 enable change, status 00000503
scsi 8:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2

이 시점에서 modeswitch다음 명령을 사용하여 장치를 모뎀 모드로 전환했습니다.

usb_modeswitch-1.1.9-arm-static -v 12d1 -p 1f01 -W -M 55534243123456780000000000000011060000000000000000000000000000

이는 성공하고 제품 코드를 변경한 후 다시 연결합니다.

lsusb:

Bus 001 Device 003: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem

dmesg:

usb-storage 1-1:1.0: disconnect by usbfs
usb 1-1: usbfs: process 4792 (usb_modeswitch-) did not claim interface 0 before use
hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
hub 1-0:1.0: port 1, status 0100, change 0001, 12 Mb/s
usb 1-1: USB disconnect, address 12
usb 1-1: unregistering device
usb 1-1: usb_disable_device nuking all URBs
usb 1-1: unregistering interface 1-1:1.0
usb 1-1:1.0: uevent
usb 1-1: uevent
hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x100
hub 1-0:1.0: hub_suspend
usb usb1: bus auto-suspend
usb usb1: usb resume
hub 1-0:1.0: hub_resume
hub 1-0:1.0: port 1: status 0101 change 0001
hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
usb 1-1: new high speed USB device using musb_hdrc and address 13
usb 1-1: skipped 4 descriptors after interface
usb 1-1: skipped 4 descriptors after interface
usb 1-1: skipped 4 descriptors after interface
usb 1-1: default language 0x0409
usb 1-1: udev 13, busnum 1, minor = 12
usb 1-1: New USB device found, idVendor=12d1, idProduct=1001
usb 1-1: New USB device strings: Mfr=2, Product=1, SerialNumber=0
usb 1-1: Product: HUAWEI Mobile
usb 1-1: Manufacturer: HUAWEI Technology
usb 1-1: uevent
usb 1-1: usb_probe_device
usb 1-1: no configuration chosen from 1 choice
/home/stephane/.ardrone/linux/ardrone2_ARDrone2_Version_20130102/Linux/kernel/omap/drivers/usb/core/inode.c: creating file '013'
hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
hub 1-0:1.0: port 1 enable change, status 00000503
Spurious irq 95: 0xffffffdf, please flush posted write for irq 56

불행하게도 해당 usb_probe_device단계 후에는 구성을 찾았지만 설명 없이는 선택하지 않는다는 메시지가 표시됩니다.

발견된 구성을 계속 실행하지 않는 이유를 알아내는 데 도움을 줄 수 있는 사람이 있습니까? 어떤 진단 단계를 수행해야 합니까? 어떤 테스트를 시도해야 합니까?

답변1

나도 당신과 같은 일을 하려고 합니다. ARDrone2에서 작동하는 3G/4G 모뎀을 얻으려고 합니다. 그러나 나는 당신만큼 멀리 있지 않습니다. 나는 방금 툴체인을 사용하기 시작했고 hello world를 실행하려는 처음 몇 번의 시도는 실패했습니다.

딱히 답은 없고 그냥 아이디어만 있을 뿐입니다. 귀하의 로그 메시지를 Google에서 빠르게 검색한 결과 다음과 같은 내용을 발견했습니다. https://bugzilla.kernel.org/show_bug.cgi?id=8167

그러나 나는 ARDrone2가 커널 2.6.32.9를 사용하고 있다고 생각하며, bugzilla에 언급된 코드 파일을 살펴본 후에 언급된 수정 사항이 이미 존재하는 것 같습니다.

ARDrone2에는 uclinux일반적으로 임베디드 시스템을 대상으로 하는 빌드가 있으므로 빌드는 최소한의 기능에 최적화되어 있습니다. 드론에서 커널 모듈을 컴파일할 때 일부 플래그가 설정되지 않았을 수 있습니다(파일에는 generic.c명령문의 관련 줄 주위에 이를 암시하는 주석이 있습니다 #if !defined).

이것이 사실이라면 올바른 플래그를 활성화하여 다시 컴파일해야 합니다. 그러나 문제를 테스트할 수는 없습니다. 내 모뎀은 아직 배송 중이에요.

관련 정보