2017-03-20 30 views

답변

0

? 어쩌면 비디오를 업로드하고 스카이프에서 다시 재생할 수있는 동글일까요? 어쨌든, 이것은 configfs에 대한 좋은 연습처럼 들린다. 높은 수준에서

이 단계는 다음과 같습니다

  1. 자체적으로 작업 대용량 저장 장치를 가져옵니다.
  2. UVC가 작동합니다 (이미지를 호스트로 스트리밍).
  3. 둘을 하나의 스크립트로 결합하십시오.

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에있는 것을보고, 아마 그 변경은 필요하지 않습니다.