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

2023-12-02 02:44

本文主要是介绍【技术分享】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

这篇关于【技术分享】RK356X Android11 以太网共享4G网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443664

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应