Hi,
I've been working on an ARM processor that is supposed to behave as a USB peripheral when connected to smart phones via an OTG cable. To that end, I built a Linux kernel (v3.2) with Gatgetfs option built in.
Then, I found and modified a sample user code.
In general, the application works as expected. My two different Android smart phones (whose versions are below 8.1) detect my processor as a peripheral and communicate with it through a USB client app.
However, there is one smart phone with Android 8.1 installed that does not recognize the device at all. I checked if other USB apps (e.g. USB Device Info app from Google Play) would detect it, but they did not, either. Could it be because of Android 8.1? Might Google have updated the way Android recognizes USB peripherals in such a way that my peripheral application does not meet certain criteria?
The USB parameters in my Linux application are as follows: (this info was also obtained through the USB Device Info app from pre-8.1 phone)
Device Class: Vender Specific (0xFF)
Vendor ID: 0x1CBE
Product ID: 3
Interface #0
Class: Vendor Specific (0xFF)
Endpoint #0
Address: 0x81
Number: 1
Direction: Inbound
Type: Bulk
Poll Interval: 0
Max Packet Size: 512
Attributes: 000000010
Endpoint #1
Address: 0x01
Number: 1
Direction: Outbound
Type: Bulk
Poll Interval: 1
Max Packet Size: 512
Attributes: 000000010
Endpoint #2
Address: 0x83
Number: 3
Direction: Inbound
Type: Interrupt
Poll Interval: 6
Max Packet Size: 8
Attributes: 000000011