Android——4.2 - 3G移植之路之libusb (一)

Android libusb库的使用 阅读详情

   前段时间往smart TV上移植3G模块,发现移植3G的百度谷歌一搜,基本全是linux开发板上的,

我在这里记录一下 我移植 的全过程,让他人少走弯路,有什么建议或者不对的欢迎留言~


                                                                  撰写不易,转载请注明出处:http://blog.youkuaiyun.com/jscese/article/details/39057033

一.设备识别

目前的3G模块都是usb接口的,插在android系统中都会默认识别为usb storage 设备,会尝试通过Vold 挂载为usb 存储设备!

所以必须要把设备类型转掉,转换成Modem类型设备,只有这样才能实现主机与模块之间的正常通信,这里就需要一个转换驱动了,

usb-modeswitch 开源驱动,网上下载:http://www.draisberghof.de/usb_modeswitch/#download

其中还需要支持的API库,源码下载:http://www.libusb.org/

只有通过模式转换才算是正确的识别到了3G设备, 这里先解析 usb-modeswitch 所需要的 API 的移植。



二.编译libusb/libusb-compat

从上面的网址上面可以下载最新的 libusb-1.0.9 和 libusb-compat-0.1.4 (对久版本的兼容),

解压到我们android源码的 external 中,这两个lib 是为后面的usb_modeswitch服务的动态库,可以直接在linux上进行交叉编译,最后也能得到libusb.so libusb-compat.so,编译方法网上有很多!

我想竟然是往android平台移植,那么我就放到external中用android的编译机制去编译!

往两个文件夹下面添加Android.mk

先看libusb的Android.mk:


#jscese add this android.mk to compile libusb.so for usb_modelswitch 140819
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

common_src :=\
	libusb/core.c \
	libusb/descriptor.c \
	libusb/io.c \
	libusb/sync.c \
	libusb/os/linux_usbfs.c \
	
common_include :=\
	$(LOCAL_PATH)/ \
	$(LOCAL_PATH)/libusb \
	$(LOCAL_PATH)/libusb/os
	
LOCAL_MODULE := libusb
LOCAL_SRC_FILES :=$(common_src)

LOCAL_C_INCLUDES +=$(common_include)
include $(BUILD_SHARED_LIBRARY)

可以看到编译的.c源文件只要5个就OK 了,我们下载的libusb包里面有的不需要,需要进行一些修改和配置,

我的libusb源码下载:http://download.youkuaiyun.com/detail/jscese/7868431


libusb-compat的Android.mk:


#jscese add this android.mk to compile libusb-compat.so for usb_modelswitch 140819
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LIBUSB_DIR :=external/libusb

common_src :=\
	libusb/core.c \

	
common_include :=\
	$(LOCAL_PATH)/ \
	$(LOCAL_PATH)/libusb \
	$(LIBUSB_DIR)/libusb


LOCAL_MODULE := libusb-compat
LOCAL_SRC_FILES :=$(common_src)
LOCAL_C_INCLUDES +=$(common_include)
LOCAL_SHARED_LIBRARIES := libusb

include $(BUILD_SHARED_LIBRARY)

可以看到libusb-compat 引入libusb

我的libusb-compat源码下载:http://download.youkuaiyun.com/detail/jscese/7868445


可在源码下 通过:

mmm external/libusb

单独编译对应的.so


这里先记录libusb的移植,一步一步来。。



Libusb在Android平台上的环境以及原理     一、环境:配置NDK环境 1、下载libusb源码:https://github.com/libusb/libusb/releases,如下图所示 2、删除一些和Android平台无关的文件,删除后的文件如下图所示: 思考问题: Android是怎么获取usb设备? 如上图所示:连接adb shell,然后cd到/sys/bus/usb/devices/目录,命令ll... 阅读详情

相关推荐

移植usb-modeswitch-2.4.0到RT5350/MT7620原厂SDK

首先要先移植 libusb-1.0.20, 可参见以前的信息。 首先去http://www.draisberghof.de/usb_modeswitch/ 下载 usb-modeswitch-2.4.0.tar.bz2  解压到"source/user"中 一)修改 "source/config/config.in" 以便在make menuconfig 时可以选

junglefly的学习工作纪录 2162

Libusb库在Android下的使用例程

转载请注明:http://blog.csdn.net/hubbybob1/article/details/54863662 阅读本文前清先了解相关基础内容,操作步骤请阅读博客:libusb1.0在android内的移植和使用方法 在讲解了libusb库在Android下的移植和基本应用后,下面来讲解Libusb的Android工程;其工程步骤: 1.建立带有JNI工程的eclipse工

hubbybob1专栏 2万+

Windows下树莓派4G HAT MBIM模式配置全攻略

在物联网和嵌入式开发中,USB设备与操作系统的通信协议是关键技术基础。传统串口通信依赖AT指令集,效率较低且无法被系统网络栈直接管理。MBIM(Mobile Broadband Interface Model)作为一种专为移动宽带优化的现代协议,通过USB接口让系统将4G模块识别为标准网络适配器,实现高效数据传输和原生网络管理。这一技术对于需要稳定蜂窝网络连接的工控、移动计算和边缘设备场景至关重要。本文聚焦于解决树莓派4G HAT在Windows环境下从串口模式切换到MBIM模式的实际问题,详细介绍了使用u

weixin_30706691的博客 284

Android/linux从usb声卡获取音频(使用libusb库)----环境,lsusb命令的介绍(一)

Android/linux从usb声卡获取音频(使用libusb库)---环境,lsusb命令的介绍(一) Android/linux从usb声卡获取音频(使用libusb库)---设备环境的确认(二) Android/linux从usb声卡获取音频(使用libusb库)---libusb库获取“纯麦”音频数据(三) Android/linux从usb声卡获取...

Canok 2724

USB系列-LibUSB使用指南(1)-Windows下的报错与踩坑

Windows下的LibUSB开发的大怨种踩坑日记

The Road of Engineer 2万+

android上可用的libusb.so

基于libusb-1.0.3版本,经过ndk编译的,经测试在androis上可用

Android 3G通信

原创Android——4.2 - 3G移植之路之 APN (五) APN(Access Point Name),也就是 接入点 ,移动设备使用数据流量上网必须配置的一个参数,代表以何种方式来连接服务台开启数据流量功能. 一般有访问WAP或者connect 因特网,国内的运营商2G,3G标识如下: 移动公司:2G:GSM、3G:TD-SCDMA 联通公司:2G:GSM、3G:WCDMA 电信公司:2G:CDMA、3G:CDMA2000 关于具体某个运营商的几G网络 的APN 是什么具体可参考/dev...

linuxarmsummary的专栏 243

安卓下libusb编译

mk都整理好了,直接进入到相应的目录下使用ndk-build编译就可以了

Android——4.2 - 3G移植之路之usb-modeswitch (二)

  在前文Android——4.2 - 3G移植之路之libusb (一)  中有解析到libusb 这个动态库的移植,目的就是为了 usb-modeswitch 服务。 usb-modeswitch的作用就是转换usb型的设备状态,也是3G 移植中重要的准备工作!   撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/392...

jinchengzhou的专栏 687

Unity嵌套ScrollView滑动冲突解决方案:ExecuteEvents.Execute事件透传

在Unity UGUI中,竖向与横向ScrollView嵌套时出现滑动失效,本质是EventSystem事件分发机制的拦截限制。其原理在于PointerDown被外层捕获后,后续PointerMove默认不向下透传;ExecuteEvents.Execute提供了一条绕过常规冒泡流程的官方事件旁路,支持低延迟、方向自适应的精准透传。该技术具备高兼容性与零侵入特性,广泛应用于电商商品页、内容流卡片组、多级导航等需‘列表中嵌套轮播/标签’的真实场景,是解决UGUI嵌套滚动问题的核心工程实践方案。

weixin_33164198的博客 632

算法 A 求稳健平均值和稳健标准差

文章目录算法原理代码 算法原理 算法 A 来自 GB/T 6379.5。应用此算法计算得到数据平均值和标准差的稳健值。稳健性是估计算法的特点,而不是其产生的估计值的特点,因此严格来说,称由此算法计算的平均值和标准差是稳健的是不确切的。然而,为避免使用繁琐的术语,“稳健均值”和“稳健标准差”应理解为利用稳健算法计算的总体均值和总体标准差的均值估计。 设数据为 xi,i∈(1,2,⋯ ,n)x_i, i\in(1,2,\cdots,n)xi​,i∈(1,2,⋯,n),记稳健平均值为 x∗,s∗x^*, s^*x

zhuo木鸟的博客 9254

华为3G e220 linux

点击打开链接 Linux下华为3g模块e220上网 点击打开链接  Android——4.2 - 3G移植之路之libusb (一) 点击打开链接  Android??4.2 - 3G移植之路之usb-modeswitch (二) 点击打开链接

wocao1226的专栏 685

Seedance 2.5本地部署指南:AI生图与视频生成的完整实践

最近在AI生成内容领域,本地部署方案越来越受到开发者关注。特别是Seedance 2.5的发布,让很多原本依赖云端服务的用户开始转向本地化解决方案。本文将从实际使用角度出发,完整介绍Seedance 2.5的本地部署流程、功能特性对比以及实际应用技巧。 1. Seedance 2.5核心特性解析 1.1 什么是Seedance 2.5 Seedance 2.5是一款开源的AI生图和视频生成工具,支持在本地环境运行,无需联网即可实现高质量的图像和视频生成。相比之前的2.0版本,2.5在生成质量、运行效率和功能

weixin_42566121的博客 1677

Android从USB声卡录制高质量音频-----使用libusb读取USB声卡数据

为了获取USB声卡数据,在网上进行了大量的文章搜索,发现USB的库都是使用C语言写的,使用比较多的应属libusb了。 参考https://github.com/shenki/usbaudio-android-demo.git 1、libusb简介 libusb是一种高级别的,底层的API,它封装了低级别的内核与USB模块的交互,并提供了一系列适合在用户空间进行usb驱动开发的函数。libu...

linzekai100的博客 8641

从零构建个人知识库:Obsidian与Git实践打造可生长的第二大脑

在信息爆炸的时代,如何有效管理个人知识资产,构建一个可检索、可关联、可生长的个人知识库,成为提升学习效率和创造力的关键。其核心原理在于通过系统化的信息架构与工作流设计,将碎片化信息转化为结构化的知识网络。从技术价值看,这不仅是笔记方法的升级,更是个人知识管理(PKM)和思维模式的革新,能有效对抗信息过载与知识孤岛。实践中,以Obsidian为代表的本地Markdown笔记软件,结合双向链接和关系图谱功能,为知识网络的构建提供了强大支撑;而引入Git进行版本控制,则确保了知识资产的历史可追溯性与安全备份。这种

weixin_28836989的博客 302

YOLOv8工业级增强实战:小目标检测与HDR鲁棒性优化

YOLO(You Only Look Once)作为主流实时目标检测框架,其核心价值在于模块化架构与工程可扩展性。理解YOLOv8的Anchor-Free设计、C2f特征融合机制及Detect头部解耦原理,是实现性能突破的基础。在工业落地中,真实瓶颈往往不是模型版本迭代,而是小目标漏检、高动态范围(HDR)场景适应差、密集遮挡ID断裂等具体问题。通过配置层动态多尺度训练、物理感知数据增强、Neck跨尺度注意力注入、质量感知损失函数升级等七层增强策略,可在不更换主干的前提下显著提升mAP与边缘设备推理效率。本

weixin_32667439的博客 259

第三方库LibUSB在Android系统上的简单使用

背景:公司开发一个USB设备的固件升级工具。1、为毛使用LibUSB库?因为使用Android Host API读取不到我想要的USB设备。有类似的兄弟姐妹们请看自定义HID设备与Android设备通信,看了这篇文章之后,是不是觉得可以不用了?是的,你们说得很对。可能会存在这个小概率事件——没有修改描述符的自定义设备已经发货到客户终端了,客户使用起来不爽,设备商于是更新了固件,需要在Android...

UPON的博客 1万+

matlab 点云均值、中值、高斯滤波【2024最新版】

点云均值滤波、中值滤波、高斯滤波的matlab自带函数实现。博客长期更新,本文最近一次更新时间为:2024年11月9日。

点云侠的博客 5259

Qt for android : libusb在android中使用

不需要root权限, Qt for Android调用libusb获取USB信息

听我一言的博客 3028

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

RK3588部署YOLOv11与RKNN全流程教程

本文详细介绍了在RK3588开发板上部署YOLOv11目标检测模型的全流程。主要内容包括:PC端CUDA/cuDNN环境配置、Anaconda虚拟环境搭建、RKNN Toolkit2安装;YOLOv11模型从PyTorch到ONNX再到RKNN的格式转换;以及RK3588开发板的系统配置、RKNPU驱动安装和最终推理实现。教程提供了完整的代码示例,帮助开发者快速在边缘设备上实现高效的AI推理应用,涵盖从环境准备到实时检测的全套解决方案。

FJN110的博客 376

自制CMSIS-DAP下载器

最近在研究无线下载器,就用ARM开源的CMSIS-DAP协议,结果自闭了四五天,终于在一篇非常棒的文章里找到了方法,因为写的太好了,所以这里我直接把原文翻译成中文,英文原文见:usb_express:cmsis-dap [Geniekits] 在STM32F103C8上实现CMSIS-DAP 本工程的相关代码已经上传至Github,你也可以从我的下载页面获取到源文件。 如果你想在主流的MCU...

qq_21506881的博客 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 下使用libusb 跟其他usb协议的外设进行通信------------------打开usb设备

最近在android系统上,需要对接4款协议一样的效果器,其中2台可以用,但是另外两台一直不行! 后面才发现是open device那边写的有问题,现将我打开usb设备的函数分享给各位,同时也给自己做个笔记! static libusb_device_handle * Open_Usb_Device(unsigned short vid, unsigned short pid) { l...

fhplzh的专栏 1305

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android 交叉编译Libusb

Android NDK 编译 libusb

优快云NETVIP的博客 1222

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: C/C++ —— 十六进制类型字符串的转换
下一篇: Android——编译安装Module的控制因素
南丶烟
博客等级 码龄14年 569粉丝 98原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值