가젯 모듈을 자동으로 로드하고 usb0 장치를 eth 인터페이스로 불러오는 데 문제가 있습니다. 문제의 인터페이스는 임베디드 Linux 장치에 사용되며 PC에 연결되는 g_ether입니다.
플러그인에서 이벤트를 보고 udev를 사용하여 스크립트를 실행하는 방법이 있을 것 같습니다. 장치를 컴퓨터에 연결하면 어떤 이벤트도 표시되지 않습니다. udevadm 모니터의 다양한 변형을 시도했지만 가젯 모듈을 모드프로브하기 위해 udev 규칙으로 사용할 수 있는 것이 무엇인지 파악하는 방법을 잘 모르겠습니다.
내가 otg 모듈을 로드하려는 이유 중 하나는 우리가 주로 g_ether를 사용하기 때문입니다. avahi-autoipd를 사용하고 싶지만 삽입하기 전에 IP 주소를 얻습니다. 네트워크 인터페이스에서 Allow-hotplug를 사용하면 연결 시 인터페이스가 자동으로 시작되지 않습니다. 따라서 이론적으로는 장치를 PC에 연결하고 새 네트워크 인터페이스에서 avahi-autoipd를 실행하여 IP를 검색한 다음 dhcpd를 실행하여 IP를 호스트에 제공하려고 합니다.
다른 사람들이 stackoverflow에서 나를 돕기 시작한 이후로 더 많은 정보를 얻었습니다(여기에 다시 게시).
/sys/bus/usb/devices$ ls
1-0:1.0 2-0:1.0 3-0:1.0 3-1 3-1:1.0 usb1 usb2 usb3
[ 4297.515400] g_ether gadget: high speed config #2: RNDIS
[ 4300.379021] g_ether gadget: high speed config #1: CDC Ethernet (ECM)
sys/bus/usb/devices$ ls
1-0:1.0 2-0:1.0 3-0:1.0 3-1 3-1:1.0 usb1 usb2 usb3
나는 달리기를 시도했다.
udevadm monitor --environment
udevadm monitor --environment --udev
udevadm monitor
udevadm monitor --kernel
udevadm monitor --kernel --udev
장치를 분리했다가 연결해도 아무 것도 표시되지 않습니다. 맨페이지에는 "커널 uevent 및 udev 규칙에서 보낸 이벤트 수신 대기"라고 나와 있으며 내 장치에는 규칙이 없습니다. 그래서 다른 하드웨어로 뭔가를 하려고 해도 아무것도 인쇄되지 않는 이유가 아닐까 싶습니다.
저는 임베디드 Linux 배포판을 실행하고 있습니다. 데스크탑이 가지고 있는 모든 것을 내가 가질 수는 없을 것 같은데요?
내 g_ether 모듈에 문제가 있을 수 있다는 걸 알았나요? 이러한 출력은 절대 변경되지 않습니다. cat /sys/class/net/usb0/carrier cat: 읽기 오류: 잘못된 인수 cat /sys/class/net/usb0/operstate down
답변1
uevent의 USB 관련 변수는 커널 함수에서 설정됩니다 usb_uevent
. 함수 호출 여부를 추적할 수 있습니다.