2017-04-06 3 views
0

USB 직렬 연결을 사용하여 GBA ST2 Bill Validator와 통신하려고합니다. 모든 것이 Windows에서 잘 작동하지만 (장치는 COM 포트에 연결됩니다) Linux에서는 없습니다 (지금까지는 Ubuntu 14.04, 16.04 및 Debian 8).Linux에서 USB 직렬 통신이 작동하지 않습니다 (Bill Validator GBA ST2)

기본적으로 cdc_acm 드라이버가 사용되며/dev/ttyACMx에 연결되지만 요청에 응답하지 않습니다. (그러나 잠자기 모드에서 요청할 때 즉시 깨어납니다.)

dmesg를lsusb

관련 출력 :

$ dmesg 
[26600.821389] usb 2-1: new full-speed USB device number 37 using ohci-pci 
[26601.307233] usb 2-1: New USB device found, idVendor=16f9, idProduct=0003 
[26601.307237] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 
[26601.307239] usb 2-1: Product: GBA ST2 
[26601.307240] usb 2-1: Manufacturer: Astrosystems 
[26601.307242] usb 2-1: SerialNumber: 06010010001 
[26601.316173] cdc_acm 2-1:1.0: ttyACM0: USB ACM device 

$ lsusb -t 
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/12p, 12M 
    |__ Port 1: Dev 37, If 0, Class=Communications, Driver=cdc_acm, 12M 
    |__ Port 1: Dev 37, If 1, Class=CDC Data, Driver=cdc_acm, 12M 
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/12p, 480M 

usbserial 드라이버를 사용하는 장치를 강제로 때, 나는 (버추얼 윈도우에서 호스팅) 리눅스 VM에서 사용할 수 있었다 , 그러나 평범한 리눅스 머신에서는 그렇지 않다. 나는 usbserial 드라이버를 사용하려면 다음 명령을 사용 :

sudo modprobe -r cdc_acm 
sudo modprobe usbserial vendor=0x16f9 product=0x0003 

관련 dmesg를lsusb를 출력 :

나는 리눅스에서이 장치와 통신 할 수있는 방법
$ sudo dmesg 
[26022.203166] usbserial: USB Serial support registered for generic 
[26022.203188] usbserial_generic 2-1:1.0: Generic device with no bulk out, not allowed. 
[26022.206497] usbserial_generic: probe of 2-1:1.0 failed with error -5 
[26022.206530] usbserial_generic 2-1:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes. 
[26022.206532] usbserial_generic 2-1:1.1: Tell linux-[email protected] to add your device to a proper driver. 
[26022.206533] usbserial_generic 2-1:1.1: generic converter detected 
[26022.207075] usb 2-1: generic converter now attached to ttyUSB0 

lsusb -t 
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/12p, 12M 
    |__ Port 1: Dev 35, If 0, Class=Communications, Driver=, 12M 
    |__ Port 1: Dev 35, If 1, Class=CDC Data, Driver=usbserial_generic, 12M 
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/12p, 480M 

? 어떤 아이디어라도 감사 할 것입니다.

+0

Stack Overflow는 프로그래밍 및 개발 관련 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. 또한 [Dev Ops에 관한 질문은 어디에 게시합니까?] (http://meta.stackexchange.com/q/134306) – jww

+0

나는 같은 질문을 던졌습니다. 이 문제는 프로그래밍 방식 (예 : 사용 된 드라이버)과 관련 될 수 있으므로 여기에 마침내 내 질문을 게시하기로 결정했습니다. 나는 다른 적합한 장소에서 시도 할 것이다. –

답변

0

http://www.intelligentvending.co.uk/payment-systems-telemetry/banknote-readers-note-stackers/gba-st2.htm에 따라이 ccTalk, MDB,를 통해 통신 할 수있는 법안 검사기 순간에 사용하는 것 프로토콜에 따라 병렬, 펄스, 직렬, SSP

socat을 사용하여 CDC ACM 장치와 통신 할 수 있습니다. https://unix.stackexchange.com/questions/97242/how-to-send-at-commands-to-a-modem-in-linux

socat 당신이 보내야 할 것을 명령 시퀀스 연결이 법안 검사기의 본 프로토콜에 따라 설정에 AT 명령을 보낼 socat를 사용하는 예입니다 ...

관련 문제