usage: power.py [-h] [-m [MOD ...]] {cycle,off,on} id
Powers off/on usb devices by id
positional arguments:
{cycle,off,on} action to perform: power-cycle, off or on
id usb device id in the form 'idVendor:idProduct', each id is a hex number from 0 to ffff, e.g., '123:abcd'
options:
-h, --help show this help message and exit
-m [MOD ...], --mod [MOD ...]
kernel module(s) to unload before the action, and to load back after the action
참고 스크립트는 루트로 실행해야합니다.
나는 실수로 yi yu의 Hub-Ctrl Fork를 사용하여 실수로 해결 방법을 발견 한 후이 파이썬 스크립트를 작성하여 아치 리눅스를 실행하는 노트북에서 Razer Core X Chroma에서 이더넷 포트를 만들기 위해 이더넷 포트를 만듭니다. 수정은 이더넷 컨트롤러가 (내부적으로) 연결된 포트에 전원을 끄는 것이었고 다시 전원을 켜는 것이 었습니다. hub-ctrl 에서는 불가능한 허브 버스/장치를 하드 코딩하지 않고이 작업을 수행하고 싶었으므로 공급 업체 및 제품 ID의 장치를 찾기 위해 PYUSB를 사용하여 hub-ctrl 에서 발견 된 usb_control_msg() 에 전원을 공급했습니다. 또한 이더넷 어댑터의 전원 사이클링은 eth0 이라는 새로운 네트워크 인터페이스를 생성하여 기존의 이름을 붙잡았다는 것을 알았습니다. 도움이되는 해결 방법은 전력 사이클링 전에 ax88179_178a 커널 모듈을 내린 다음 다시로드하는 것입니다. 따라서 동일한 스크립트로 도이 작업을 수행하는 옵션을 추가했습니다. 이제 난 그냥 달린다
python power.py cycle 0b95:1790 -m ax88179_178a
시스템 부팅에서 이더넷이 마침내 작동합니다.
스크립트에는 다음의 종속성이 있습니다.
libusb-1.0-0libusb-0.1-4pyusb > = 1.1.0 두 가지 이유로 libusb1 및 libusb0 백엔드를 모두 사용합니다.
libusb0 장치가 연결되는 허브를 찾는 데 사용되는 get_parent 메소드를 구현하지 않습니다.libusb-0.1-4 사용하여 전원 끄기/on 제어 메시지를 실행하면 원하는 결과가 나왔습니다. libusb1 , libusb-compat도 트릭을하지 않았습니다. libusb-1.0-0 및 pyusb :
sudo pacman -Sy libusb python-pyusb
libusb-0.1-4 aur, https://aur.archlinux.org/packages/libusb0, eg, yay 를 통해 설치해야합니다.
yay -Sy libusb0
최신 우분투 배포 (최소한 22.04부터 시작)는 공식 [universe] 저장소에 pyusb==1.2.1 있으므로 모든 종속성을 apt 와 함께 설치할 수 있습니다.
sudo apt update
sudo apt install libusb-1.0-0 libusb-0.1-4 python3-usb
구형 우분투 배포판을 실행하는 경우, 예를 들어 20.04는 pyusb==1.0.2 가지고 있다면 pypi에서 pyusb 설치할 수 있습니다.
sudo apt update
sudo apt install libusb-1.0-0 libusb-0.1-4 python3-pip
sudo python3 -m pip install pyusb