问题标签 [usb-otg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
31425 浏览

android - How app can access files on USB OTG storages in Android 6.0 (API level 23) without root?

Android 6.0 Developer Preview (API level 23) can natively mounts external removable USB OTG storages out-of-the-box without any additional apps (for more info please see: https://www.androidpolice.com/2015/05/28/android-m-feature-spotlight-external-storage-can-be-adopted-as-true-internal-storage-or-accessed-normally-with-no-additional-apps/).

When user connects USB OTG storage, it shows up in the system storage menu and it is accessible with the built-in file manager. User can access all files on the USB OTG external storage using the new built-in file manager without root rights.

When I connect my USB OTG storage to my Android device, it mounts at /storage/A03E-1DF5 and also at /mnt/media_rw/A03E-1DF5, but root rights required to access this folder.

I'm working on Android media player app.

Is it possible and how to access files on USB OTG storages on Android 6.0 in my app like the built-in file manager without root rights?

P.S. I already use checkSelfPermission and requestPermissions functions in my app and my app already has android.permission.READ_EXTERNAL_STORAGE and android.permission.WRITE_EXTERNAL_STORAGE (for more info please see: https://www.androidpolice.com/2015/07/15/android-m-feature-spotlight-apps-now-need-your-permission-to-read-and-write-to-external-storage/), but looks like these permissions only affects internal storages (MicroSD), and for USB OTG there is no such granular permission.

0 投票
0 回答
3772 浏览

android - 如何直接在OTG USB随身碟上安装apk?

我已在清单文件中设置,android:installLocation="preferExternal"但未作为 USB 安装在外部存储中。

我可以作为 SDCARD 安装在外部存储设备上。

另外,我尝试过 adb 命令,例如:

但只能在 SDCARD 上传输。

请提供直接在 OTG Pen Drive 上安装应用程序的建议。

谢谢你...!!!

0 投票
0 回答
151 浏览

android - 访问 USB OTG 设备时抑制 androids 系统消息

我正在开发一个使用 USB OTG 设备的 android 应用程序。该应用程序通过 android USB API“连接”到设备,我正在使用外部库读取一些卷信息。

一切正常,但存在用户体验问题:设备是由 android 挂载的,但是当与我的应用程序建立连接时,设备明显为操作系统卸载,并显示类似“USB 存储意外删除”的消息.

我知道,从机器人的角度来看,这是正确的行为——但不是我的用户的 :-)

有谁知道抑制系统消息或采取任何解决方法的可能性?欢迎任何想法......我已经阅读了一些 SO 票,并且认为在从我的应用程序连接之前以编程方式安全卸载设备是不可能的。

0 投票
0 回答
655 浏览

usb-otg - PIC32MZ USB 主机模式设备枚举问题

我尝试在 USB 主机模式下将 USB 键盘与 PIC32MZ1024ECG64 一起使用,但只有在我从复位中释放 PIC 之前键盘已经连接时,PIC 才能识别键盘。如果我断开键盘并将其重新连接,那么 PIC 将无法识别它,但如果我只断开 D- 和 D+ 线并将这些线重新连接,那么 PIC 可以再次识别键盘。当我断开键盘(不仅是 D- 和 D+)并查看 USBOTG 寄存器时,PIC 将自身切换到 USB-B 模式并保持在此模式。我将 MPLAB Harmony 与 1.06 库一起使用。VBUS3V3 引脚连接到 3.3V 电源,VBUS 引脚连接到 5V 电源,USBID 引脚接地。

有人知道为什么当我断开键盘的 USB 连接器时 PIC 会自动切换到 USB-B 模式吗?

任何建议将不胜感激。

兄弟,维克多·文策尔

0 投票
0 回答
785 浏览

raspberry-pi - 如何在树莓派零 USB OTG 端口上启用串口?

Raspberry Pi Zero 带有 USB OTG 端口。在阅读了一些有关 OTG 驱动程序的信息后,似乎可以将其配置为 CDC 设备,如串口。所以我想知道 Pi Zero 是否可以这样做?

0 投票
0 回答
308 浏览

android - Android USB主机:中断不立即响应

我有一个带有按钮的 USB 设备。我想要一个 android 应用程序来捕捉按钮的信号。我找到了按钮的接口和端点编号。它似乎在 Galaxy S3 和 Galaxy Note 上表现一般。但后来,我发现它在其他手机上有延迟。

我能够在大约 10% 的时间内收到即时回复;通常会有 2 秒的延迟,在某些情况下会丢失整个响应。

虽然我无法弄清楚确切的原因,但我意识到响应延迟的手机是内核版本为 3.4 或更高版本的手机。

这是我最初使用的代码。

编辑超时

当超时设置为 50 毫秒时,我大部分时间都无法收到响应。当超时为 500 毫秒时,我最初能够得到一些延迟响应;但是,在使用此设置多次尝试后,我失去了所有响应。

使用 UsbRequest

除了使用批量传输方法外,我还尝试使用 UsbRequest,下面是我使用的代码。

但是,即使在使用 UsbRequest 之后,也会发生同样的延迟。

使用 libusb

我还尝试使用名为 libusb 的开源库中的libusb_interrupt_transfer 。然而,这也产生了与我使用 UsbDeviceConnection 时相同类型的延迟。

在查看了libusb_interrupt_transfer处理libusb的部分之后,我能够弄清楚interrupt_transfer的一般步骤:1.创建一个interrupt类型的传输对象2.创建一个指向传输对象的urb对象3.提交urb对象到设备的 fd 4. 通过 urb 对象检测 fd 对象的任何变化 5. 通过 ioctl 读取 urb

步骤 3、4、5 是有关文件 i/o 的步骤。我发现在第 4 步,程序会等待按钮按下,然后再进行下一步。

因此我尝试将 poll 更改为 epoll 以检查 poll 函数是否导致延迟;不幸的是,没有任何改变。

我还尝试将 poll 函数的超时设置为 500ms 并使其始终通过 ioctl 获取 fd 的值,但仅发现在按下按钮后 2~3 秒该值发生了变化。

所以总而言之,我觉得按下按钮后更新fd值的过程有延迟。如果有人可以帮助我解决这个问题,请告诉我。谢谢你。

谢谢阅读

0 投票
1 回答
1818 浏览

android - 同时 OTG(USB On The Go)+ 充电是否取决于操作系统版本?

在过去的一个月里,我使用以下简单的配置将我的 LG G3 同时连接到网络摄像头和电源。

电话充电和 OTG 连接到网络摄像头的图片(使用三向电缆)

我已将操作系统版本从 4.4.2 (Kitkat) 更新到 5.0 (Lollipop)。现在我的 LG G3 将进行充电或 OTG,但不再同时进行。

我想知道 OTG + 充电是否不仅会受到设备型号的影响,还会受到操作系统版本的影响?

0 投票
1 回答
3303 浏览

c - STM32 USB OTG HOST 库挂起尝试使用 FatFs 创建文件

我正在尝试在 USB 闪存上使用 FatFs 创建一个文件,但我的f_open调用尝试读取引导扇区以进行第一次文件系统挂载时挂起此功能。

主要问题是创建挂起状态的循环

所以我不知道该怎么做才能避免这种情况。使用调试器我发现状态是由CmdStateMachine结构参数引起的USBH_MSC_BOTXferParam,类型USBH_BOTXfer_TypeDef是相等的CMD_UNINITIALIZED_STATE,这实际上导致USBH_MSC_Read10函数的 switch 语句丢失。

这是USBH_BOTXfer_TypeDef类型声明;

在调试过程中,我发现它的所有字段都是 0x00。

这是我的 FatFs 电话

USB_MSC_IsConnected功能是:

设备状态为:

的值g_USB_MSC_HostStatus由标准 USB HOST 用户回调接收。

0 投票
1 回答
1358 浏览

android - 针对 API 22 或更低版本的 Android 6.0 上的 USB OTG

我正在Intellij IDEA 14.1.6下开发文件管理器,我必须支持 USB OTG 闪存驱动器。我的文件管理器在 API < 23 (Marshmallow) 的设备上与 USB OTG 配合得很好。我已经看到多个引用语句(123):

...在您选择应用程序中的版本 23 之前,它不需要完全支持。如果您的目标是 22 或更低版本,您的应用程序将在安装时请求所有权限,就像在运行低于 Marshmallow 的操作系统的任何设备上一样。

我的项目有目标:

但是 Nexus 5(升级到 Android 6.0.1)看不到 USB OTG 闪存驱动器,这与其他一些具有 API 19、21、22 的设备不同,它们可以很容易地读取和写入闪存驱动器。

问题是:有人检查过这个声明吗? 此声明是否仅适用于 API 23 或其预览版 (M)?此声明是否仅适用于Android Studio

编辑:获得 Nexus 5 with Marshmallow 的唯一方法是使用 USB OTG 作为以前的 API 级别设备是使用命令:

从终端。

0 投票
0 回答
600 浏览

android - Nexus 5 上的 USB OTG 闪存驱动器和针对 API 23 的 Android 6.0

我正在开发一个支持 USB OTG 闪存驱动器的文件管理器。我的文件管理器在 API < 23 (Marshmallow) 的设备上与 USB OTG 配合良好,我将使用以下代码实现新的 Android 6.0 运行时权限:

我的项目有目标

与以前的应用程序版本相比,这是我在 Manifest.xml 中所做的唯一更改,它在 API < 23 的设备上与 USB OTG 配合良好。

我接受在应用程序启动后出现的两个系统对话框和一个 AlertDialog,但我的 USB OTG 闪存驱动器仍然无法读取。问题是:我是否需要执行一些额外的步骤来强制 USB OTG 闪存驱动器在 Nexus 5 设备上的 Android 6.0.1 下可读?

PS 我不使用 Android Studio 和 Gradle - 这很重要吗?