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

news2024/12/24 11:29:00

本文基于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;

  @Override
  public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
         
    return null;
  }
  
  @Override
    public 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 {
    @Override
    public void onTetheringStarted() {
      Log.d(TAG, "ethernet onTetheringStarted!\n");
    }
    
    @Override
    public void onTetheringFailed() {
      Log.e(TAG, "ethernet onTetheringFailed!\n");
    }
  }

  //以太网共享
  private Runnable StartEth1ShareRunnable = new Runnable() {
        @Override
        public 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 {
  
  @Override
  public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    String 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-dwmac
          inet addr:192.168.5.1  Bcast:192.168.5.255  Mask:255.255.255.0
          inet6 addr: fe80::7a78:d959:9bff:28cd/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
          RX packets:133 errors:0 dropped:0 overruns:0 frame:0
          TX packets:158 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:17758 TX bytes:37405
          Interrupt:38

ppp0 Link encap:Point-to-Point Protocol
          inet addr:10.47.102.124  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500  Metric:1
          RX packets:104 errors:0 dropped:0 overruns:0 frame:0
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX 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 r8168
          inet addr:192.168.5.199  Bcast:192.168.5.255  Mask:255.255.255.0
          inet6 addr: fe80::4a59:7a31:cc45:1b53/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
          RX packets:286671 errors:0 dropped:0 overruns:0 frame:0
          TX packets:586 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:27238966 TX bytes:64962
          Interrupt: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.coloradmin.cn/o/1277172.html

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

相关文章

docker踩坑记录:docker容器创建doris容器间无法通讯问题

背景: 开发大数据平台,使用doris作为数据仓储,使用docker做集群部署,先进行开发环境搭建,环境为BE1;FE1,原来使用官方例子,但是官方例子是创建了一个bridge使用172.20.80.0/24通讯,…

设计模式---第四篇

系列文章目录 文章目录 系列文章目录前言一、说说策略模式在我们生活的场景?二、知道责任链模式吗?三、了解过适配器模式么?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给…

【集合篇】Java集合概述

Java 集合概述 集合与容器 容器(Container)是一个更广泛的术语,用于表示可以容纳、组织和管理其他对象的对象。它是一个更高层次的概念,包括集合(Collection)在内。集合(Collection&#xff0…

Linux下为可执行文件添加图标

Ubuntu 18.04上使用Qt5.14.2创建一个简单的Qt Widgets项目test,添加2个Push Button按钮,点击分别获取github和csdn地址,在mainwindow.cpp中添加的代码如下: #include "mainwindow.h" #include "ui_mainwindow.h" #inclu…

shell 脚本计算距离最近的坐标

shell 脚本计算距离最近的坐标 坐标数据文件geo.log格式如下: beijing(116.405285,39.904989) tinajin(117.190182,39.125596) hebei(114.502461,38.045474) shanxi(112.549248,37.857014) neimenggu(111.670801,40.818311) liaoning(123.429096,41.796767) jilin(1…

LeetCode | 100. 相同的树

LeetCode | 100. 相同的树 OJ链接 判断两个节点是否等于空,两个都等于空就直接返回true如果一个等于空,另一个不等于空,说明false然后再判断两个树的值是否相等最后递归p的左,q的左,p的右,q的右 bool isS…

SIP协议在语音通信的应用方式及OKCC系统中的配置方法

在企业语音通信的过程中,SIP协议支持的网络通信技术通过网络为用户提供了无数的通信便利,已成为企业不可或缺的重要通信技术。由于SIP协议是语音通信帮助企业实现这些优势的原因,因此了解支持这些呼叫的SIP协议的上下文至关重要。 什么是SI…

大数据之HBase(二)

Master详细架构 位置:namenode实现类:HMaster组成 负载均衡器:通过meta了解region的分配,通过zk了解rs的启动情况,5分钟调控一次分配平衡元数据表管理器:管理自己的预写日志,如果宕机&#xff…

Hertz 整合swagger

文章目录 Swagger安装使用用法项目demoSwagger注释用法通用API信息 swag命令行参数swagger路由配置 Swagger 安装 go get 安装可执行文件需要配合 GOPATH 模式工作。 go get github.com/swaggo/swag/cmd/swag 因为从 Go 1.17 开始,在 go mod 模式下通过 go get 下…

java ssh犯罪数据可视化系统eclipse开发mysql数据库MVC模式java编程网页设计

一、源码特点 JSP ssh犯罪数据可视化系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.…

SpringBoot整合Activiti7——消息事件(十)

文章目录 消息事件开始事件中间事件边界事件代码实现xml文件测试流程流程执行步骤 消息事件 消息事件只有一个接收者&#xff0c;消息具有名字与载荷。 信息会储存在 act_ru_event_subscr 表中。 <!-- 定义消息 --> <message id"msgId1" name"msgName…

【mysql】mysgld.log文件太大怎么办

我们有一台测试服务器。跑着一个msyq&#xff0c;发现没有空间了。差看日志文件占用了很多。 怎么破 使用下面命令 echo "" >mysqld.log 执行命令后

B.牛牛排队伍——模拟双链表

当前位置: 首页 > news >正文 B.牛牛排队伍——模拟双链表 news 2023/12/1 15:14:37 分析 题目其实很简单,就是双链表的增删查,但是刚开始,直接vis标记删除元素,查找一个位置的前一个用的while不断向前找,但是TLE;毕竟O(n*k)的复杂度,一开始没有考虑时间复杂度…

分享82个节日PPT,总有一款适合您

分享82个节日PPT&#xff0c;总有一款适合您 82个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1boDTl3PiHFXLJ890CoUfJA?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。…

【Matlab】如何快速入门一项新技能-以Matlab/Simulink入门为例

目录 1. 引言 2. 背景 3. 快速学习并完成开发 3.1 了解需求&#xff0c;知道要干什么 3.2 了解Matlab/Simulink基本功能 第一步&#xff0c;查看Matlab的中文网站中文网站https://www.ilovematlab.cn/resources/对Matlab/Simulink有了一个初步认识。 3.3 实现一个最简单…

07-原型模式-C语言实现

UML图&#xff1a; 代码实现&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>// 原型接口 typedef struct {void* (*clone)(void*); } Prototype;// 具体原型类 typedef struct {Prototype prototype;char* name;int age; } Concr…

列表插槽使用

{label: 是否展示,prop: isShow,solt: true, }<!--自定义列--><template slot-scope"scope" slot"isShow"><div style"color: red;cursor: pointer" focus"getIsShow(scope.row)" ><el-switch v-model"sco…

Linux部分基础指令讲解

目录 1.echo指令 2.more指令 3.less指令&#xff08;重要&#xff09; 4.head指令 5.tail指令 6.管道| 7.时间相关的指令 8.cal指令 9.find指令 10.grep指令 1.echo指令 我们先看效果 如图所示我们可以看到显示器显示出了hellow world和hellow这两句话&#xff0c;我们的echo的…

图书馆座位预约时间冲突提示(前后端全) 前端elementUI 时间选择器只显示时和分,SQL实现时间冲突判断

背景 帮客户定制项目&#xff0c;要实现图书馆预约座位的功能。 功能描述如下&#xff1a;学生选择开始时间和结束时间&#xff0c;只选择小时和分钟&#xff0c;提交预约后&#xff0c;如果该时间有冲突提示学生修改预约时间。 问题 前端样式选择的是elmentUI&#xff0c;但…

VBA技术资料MF90:在PowerPoint中完成多重查找替换

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…