단일 USB 장치 컨트롤러 포트 용 장치 모드에서 uvc 및 대용량 저장 장치를 추가하려고합니다. configfs를 사용하여 작업을 수행하고 있습니다.USB : 가제트 : 장치 모드 : 단일 구성에서 configfs : uvc 및 대용량 저장 장치?
누구나 어떻게 할 수 있습니까?
감사합니다, GBiradar
당신은 장치 카메라와 엄지 드라이브 모두 같은 기능을하고단일 USB 장치 컨트롤러 포트 용 장치 모드에서 uvc 및 대용량 저장 장치를 추가하려고합니다. configfs를 사용하여 작업을 수행하고 있습니다.USB : 가제트 : 장치 모드 : 단일 구성에서 configfs : uvc 및 대용량 저장 장치?
누구나 어떻게 할 수 있습니까?
감사합니다, GBiradar
당신은 장치 카메라와 엄지 드라이브 모두 같은 기능을하고? 어쩌면 비디오를 업로드하고 스카이프에서 다시 재생할 수있는 동글일까요? 어쨌든, 이것은 configfs에 대한 좋은 연습처럼 들린다. 높은 수준에서
이 단계는 다음과 같습니다
3 단계로 건너 뛰면 문제를 진단하는 것이 어려워집니다. 예를 들어, 사용자 공간 uvc-gadget 프로그램에 두 가젯이 열거되지 않을 수있는 문제가있는 경우
root로 Raspbian 9가 포함 된 Raspberry Pi Zero W를 열거하고 스트리밍하도록 확인 된 다음 스크립트를 실행할 수 있습니다. 1 단계에서는 UVC 관련 부분을 제거하고 2 단계에서 대용량 저장 줄과 마찬가지로 제거 할 수 있습니다.
#!/bin/bash -xe
modprobe libcomposite
cd /sys/kernel/config/usb_gadget/
mkdir -p stackoverflow
cd stackoverflow
echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 239 > bDeviceClass # USB_CLASS_MISC
echo 0x02 > bDeviceSubClass
echo 0x01 > bDeviceProtocol
mkdir -p strings/0x409
mkdir -p configs/c.1/strings/0x409
echo "My Composite Gadget" > strings/0x409/product
###################### mass storage ########################
mkdir -p functions/mass_storage.usb0
echo /dev/mmcblk0p1 > functions/mass_storage.usb0/lun.0/file
ln -s functions/mass_storage.usb0 configs/c.1/
############################################################
########################## UVC#############################
mkdir -p functions/uvc.usb1/control/header/h
cd functions/uvc.usb1/control/
ln -s header/h class/fs
cd ../../../
mkdir -p functions/uvc.usb1/streaming/uncompressed/u/360p
cat <<EOF > functions/uvc.usb1/streaming/uncompressed/u/360p/dwFrameInterval
666666
1000000
5000000
EOF
mkdir functions/uvc.usb1/streaming/header/h
cd functions/uvc.usb1/streaming/header/h
ln -s ../../uncompressed/u
cd ../../class/fs
ln -s ../../header/h
cd ../../class/hs
ln -s ../../header/h
cd ../../../../..
ln -s functions/uvc.usb1 configs/c.1/
############################################################
ls /sys/class/udc > UDC
######################## UVC part 2 ########################
sleep 1 # workaround: if gadget activated too soon, may hit a dmesg error with usb_function_activate [libcomposite]
./uvc-gadget -d
############################################################
이 (참고로, 여기 패치 내 uvc-gadget repo입니다.)
/dev/mmcblk0p1
에서 부팅 파티션에 단순히 포인팅 파이의 SD 카드를 대용량 저장 장치를 테스트하는 한 빠른 - 및 - 더러운 방법입니다. sudo fdisk -l
을 실행하여 특정 시스템에서 사용할 수있는 것을 찾으십시오.
Pi Zero는 USB 2.0 장치이므로 어떤 class/ss
(초고속)도 포함 할 필요가 없습니다. 나는 또한 의도적으로 다른 예제에서 찾을 수있는 MaxPower, 일련 번호 및 제조업체와 같은 필드를 생략했습니다. 이 스크립트는 최소한 실행 및 실행에 필요한 것을 보여주기위한 것입니다.
NXP에서 TI에 이르는 플랫폼에서 다른 채널에이 질문을 올렸습니다. 어떤 문제가 발생할 지 예측할 수 없습니다. 그러나 커널 버전 4.11-rc3에서 소개 된 UVC 관련 수정을 시도하는 것이 좋습니다. Raspbian이 현재 버전 4.9에있는 것을보고, 아마 그 변경은 필요하지 않습니다.