【技术分享】RK356X Android11 以太网共享4G网络

本文基于IDO-SBC3566-V1B Android11系统实现开机后以太网自动共享4G网络功能。

IDO-SBC3566基于瑞芯微RK3566研发的一款高性能低功耗的智能主板,采用四核A55,主频高达1.8GHz,专为个人移动互联网设备和AIOT设备而设计,内置了多种功能强大的嵌入式硬件引擎,为高端应用提供了优异的性能,支持几乎全格式的4K编解码,内置3DGPU,能够完全兼容OpenGL ES1.1/2.0/3.2、OpenCL2.0和Vulkan1.0.特殊的MMU2D硬件引擎,此外,凭借其强大的兼容性,可以轻松地转换基于TensorFlow/MXNet/PyTorch/Caffe等一系列框架的网络模型。

支持Android,Linux,OpenHarmony,麒麟OS等多种操作系统,可广泛应用于平板、教育平板、带屏音箱、词典笔、云终端、视频会议系统等安卓/Linux类应用方案,以及其他带屏消费类、或轻量级AI应用场景。

产品规格书查看深圳触觉智能官网-产品中心

添加以太网共享服务

在源码目录下新建以太网共享服务文件,实现系统开机启动时开启以太网共享。

packages/apps/Settings/src/com/android/settings/StartEth1ShareRunnable.java

文件内容如下:

package com.android.settings;//以太网共享
import android.app.Service;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import android.content.Intent;
import android.os.IBinder;import android.net.ConnectivityManager;
import static android.net.TetheringManager.TETHERING_ETHERNET;
import android.net.ConnectivityManager.OnStartTetheringCallback;public class StartEth1ShareRunnable extends Service {private static final String TAG = "StartEth1ShareRunnable";private Context mContext;//以太网共享private ConnectivityManager mCm;private OnStartTetheringCallback mStartTetheringCallback;@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {super.onCreate();mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);mStartTetheringCallback = new OnStartTetheringCallback();mHandler.post(StartEth1ShareRunnable);//启用以太网}private Handler mHandler = new Handler();private class OnStartTetheringCallback extends ConnectivityManager.OnStartTetheringCallback {@Overridepublic void onTetheringStarted() {Log.d(TAG, "ethernet onTetheringStarted!\n");}@Overridepublic void onTetheringFailed() {Log.e(TAG, "ethernet onTetheringFailed!\n");}}//以太网共享private Runnable StartEth1ShareRunnable = new Runnable() {@Overridepublic void run() {try {if (mCm != null)mCm.startTethering(TETHERING_ETHERNET, true, mStartTetheringCallback, mHandler);//开启以太网共享} catch (Exception e) {Log.e(TAG, "ethernet startTethering error!\n");e.printStackTrace();mHandler.postDelayed(StartEth1ShareRunnable, 10000);//延迟10秒后重新执行}}};
}

在packages/apps/Settings/src/com/android/settings/ 添加一个广播 MyBootReceiver.java 用于接收启动完成事件,在收到广播后调用StartEth1ShareRunnable服务

package com.android.settings;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;public class MyBootReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString action = intent.getAction();if (action.equals(Intent.ACTION_BOOT_COMPLETED)){Intent service = new Intent(context, StartEth1ShareRunnable.class);context.startService(service);}}
}

功能验证

SBC3566主板插入可使用的EC20 4G模块以及SIM卡,如下图所示:

  

从SBC3566主板网口接一根网线到另外一块主板网口上,并给两个主板供电。

在SBC3566系统查看网口及4G获取的IP

共享的网口网络IP:192.168.5.1 4G网卡IP:10.47.102.124

console:/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:ed:83:f3:50:c4 Driver rk_gmac-dwmacinet addr:192.168.5.1  Bcast:192.168.5.255  Mask:255.255.255.0inet6 addr: fe80::7a78:d959:9bff:28cd/64 Scope: LinkUP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1RX packets:133 errors:0 dropped:0 overruns:0 frame:0TX packets:158 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:17758 TX bytes:37405Interrupt:38ppp0 Link encap:Point-to-Point Protocolinet addr:10.47.102.124  P-t-P:10.64.64.64  Mask:255.255.255.255UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500  Metric:1RX packets:104 errors:0 dropped:0 overruns:0 frame:0TX packets:111 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:3RX bytes:27734 TX bytes:11416

通过ping 百度地址能正常上网

console:/ # ping www.baidu.com
PING www.baidu.com (157.148.69.74) 56(84) bytes of data.
64 bytes from 157.148.69.74: icmp_seq=1 ttl=52 time=32.8 ms
64 bytes from 157.148.69.74: icmp_seq=2 ttl=52 time=24.0 ms
64 bytes from 157.148.69.74: icmp_seq=3 ttl=52 time=24.1 ms
64 bytes from 157.148.69.74: icmp_seq=4 ttl=52 time=24.4 ms
64 bytes from 157.148.69.74: icmp_seq=5 ttl=52 time=23.8 ms
64 bytes from 157.148.69.74: icmp_seq=6 ttl=52 time=24.1 ms
64 bytes from 157.148.69.74: icmp_seq=7 ttl=52 time=25.4 ms
64 bytes from 157.148.69.74: icmp_seq=8 ttl=52 time=24.7 ms
^C
--- www.baidu.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7012ms
rtt min/avg/max/mdev = 23.808/25.447/32.874/2.852 ms

另外一块主板通过网络共享获取到的IP 为192.168.5.X网段

console:/ # ifconfig
eth1 Link encap:Ethernet HWaddr 3a:1d:f7:26:49:0a Driver r8168inet addr:192.168.5.199  Bcast:192.168.5.255  Mask:255.255.255.0inet6 addr: fe80::4a59:7a31:cc45:1b53/64 Scope: LinkUP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1RX packets:286671 errors:0 dropped:0 overruns:0 frame:0TX packets:586 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:27238966 TX bytes:64962Interrupt:169 Base address:0x3000

通过测试可以ping通互联网网址

console:/ # ping www.baidu.com
PING www.baidu.com (157.148.69.74) 56(84) bytes of data.
64 bytes from 157.148.69.74: icmp_seq=1 ttl=51 time=37.7 ms
64 bytes from 157.148.69.74: icmp_seq=2 ttl=51 time=28.7 ms
64 bytes from 157.148.69.74: icmp_seq=3 ttl=51 time=22.9 ms
64 bytes from 157.148.69.74: icmp_seq=4 ttl=51 time=23.2 ms
64 bytes from 157.148.69.74: icmp_seq=5 ttl=51 time=23.4 ms
64 bytes from 157.148.69.74: icmp_seq=6 ttl=51 time=48.0 ms
64 bytes from 157.148.69.74: icmp_seq=7 ttl=51 time=23.0 ms
64 bytes from 157.148.69.74: icmp_seq=8 ttl=51 time=24.9 ms
64 bytes from 157.148.69.74: icmp_seq=9 ttl=51 time=69.8 ms
^C
--- www.baidu.com ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time 8012ms
rtt min/avg/max/mdev = 22.930/33.577/69.879/15.184 ms

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/191427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】基于Vue+SpringBoot的服装店库存管理系统

项目编号: S 052 ,文末获取源码。 \color{red}{项目编号:S052,文末获取源码。} 项目编号:S052,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服…

JAVA全栈开发 集合详解(day14+day15汇总)

一、数组 数组是一个容器,可以存入相同类型的多个数据元素。 数组局限性: ​ 长度固定:(添加–扩容, 删除-缩容) ​ 类型是一致的 对象数组 : int[] arr new int[5]; … Student[] arr …

Effective C++(四): 资源管理

文章目录 一、智能指针驱动的RAII二、shared_ptr 和 weak_ptr三、如何复制 RAII 对象四、在资源管理类中应该提供对原始资源的访问函数 为了防止忘记调用 delete 造成的内存泄露,我们应该尽可能让对象管理资源,并且采用 RAII 机制(Resource Acquisition …

Sql Server数据库跨机器完整恢复(源文件恢复)

问题描述 在操作系统异常的情况下,SQL Server 和相关的业务系统遭受了不可用的情况。由于操作系统问题,导致旧服务器无法正常运行。为了恢复业务功能并确保数据完整性,采取了以下步骤来在新机器上进行 SQL Server 的重新安装和数据恢复。 面…

【超全】React学习笔记 中:进阶语法与原理机制

React学习笔记 React系列笔记学习 上篇笔记地址:【超全】React学习笔记 上:基础使用与脚手架 下篇笔记地址:【超全】React学习笔记 下:路由与Redux状态管理 React进阶组件概念与使用 1. React 组件进阶导读 在掌握了 React 的基…

Verilog 入门(七)(任务、函数)

文章目录 任务任务定义任务调用 函数函数说明部分函数调用 值变转储文件 任务 一个任务就像一个过程,它可以从描述的不同位置执行共同的代码段。共同的代码段用任务定义编写成任务,这样它就能够从设计描述的不同位置通过任务调用被调用。任务可以包含时…

actual combat 24 —— 创建数据库表定义码值字段时,tinyint类型和varchar(2)该如何选择?

tinyint:最大数值为127,占用1字节空间varchar(2):最大数值为99,占用2字节空间,但当存储的数字为个位数时varchar类型是可变的,只占用1个字节空间。 从这个角度来看的话,用tinyint类型来存储码值…

前端开发神器之 VsCode AI 辅助插件 DevChat

目录 前言DevChat介绍DevChat 独特优势注册账号安装插件设置密钥访问指令AI 解疑 最后 #AI编程助手哪家好?DevChat“真”好用 # 前言 我们都有过写代码时反复看了半天也不知道bug在哪,大大浪费了时间。一些基础的代码可能看一会儿能够解决,但…

k8s(三): 基本概念-ReplicaSet与Deployment

PeplicaSet ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合,通常用来保证给定数量的、完全相同的 Pod 的可用性。 最佳实践 Deployment 是一个可以拥有 ReplicaSet 并使用声明式方式在服务器端完成对 Pod 滚动更新的对象。 尽管 Rep…

oracle sql相关语法

SQL*PLUS 在SQL*PLUS执行,会在执行后显示查询的执行计划和统计信息 SET AUTOTRACE ON;SELECT * FROM your_table WHERE column_name value;SET AUTOTRACE OFF;PLSQL PLSQL查询sql界面,鼠标右键,点击执行计划,会出现sql的执行计…

matlab 汽车单车模型固定点跟踪算法

1、内容简介 略 29-可以交流、咨询、答疑 2、内容说明 单车模型固定点跟踪算法 单车模型,固定点跟踪算法,动画演示, 汽车单车模型、转弯动画、固定点跟踪算法、pid控制 3、仿真分析 略 A[0,5;0,0];B[0;1]; Q10*eye(2);R1; Klqr(A…

Java高级技术-反射

认识反射、获取类 获取类的方法 获取类的构造器 获取类的构造器、并对其进行操作 获取构造器的作用:依然是初始化对象返回 获取成员变量 获取成员变量的方法 获取成员变量的作用:赋值、取值 获取类的成员方法 方法 作用:依然是执行 作用、…

webGL开发学科演示项目方案

开发学科演示项目需要考虑到教育目标、互动性和用户体验。以下是一个可能的技术方案,可用于实现这样的项目,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.WebGL 框架: 选择…

golang 函数选项模式

一 什么是函数选项模式 函数选项模式允许你使用接受零个或多个函数作为参数的可变构造函数来构建复杂结构。我们将这些函数称为选项,由此得名函数选项模式。 例子: 有业务实体Animal结构体,构造函数NewAnimal()&…

【超全】React学习笔记 上:基础使用与脚手架

React学习笔记 React系列笔记学习 中篇笔记地址:【超全】React学习笔记 中:进阶语法与原理机制 下篇笔记地址:【超全】React学习笔记 下:路由与Redux状态管理 React 简介 React 是一个由 Facebook 开发并维护的用于构建用户界面的…

C++的一些基础

1、reinterpret_cast reinterpret_cast是四种强制转换中功能最为强大的(最暴力,最底层,最不安全)。它的本质是编译器的指令。 它的作用:它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。…

网络运维与网络安全 学习笔记2023.12.2

网络运维与网络安全 学习笔记 第三十三天 今日目标 Linux系统综述、部署本地Linux、配置Linux网络 SSH远程控制、远程文档管理、选购ECS云主机 Linux系统综述 Linux是一种操作系统 Linux之父,Linus Torwalds 1991年10月,发布0.02版(第一…

Redis集群详解

1.1 什么是Redis集群 Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,Redis集群主要有三种模式:主从复制…

海林猴头菇 区域公用品牌形象正式发布

猴头菇是中国八大“山珍”之一,自古就有“山珍猴头,海味燕窝”之说,猴头菇在中国既是食用珍品,又是重要的药用菌。 海林市位于黑龙江省东南部,地处长白山脉张广才岭东麓,素有“林海雪原”之称。 海林猴头菇…

zookeeper集群+kaafka集群

kafka3.0之前依赖于zookeeper zookeeper开源,分布式的架构,提供协调服务(Apache项目) 基于观察者模式涉及的分布式服务管理架构 存储和管理数据,分布式节点上的服务接受观察者的注册,一旦分布式节点上的…