精华内容
下载资源
问答
  • usb网络共享驱动

    2015-08-26 13:09:37
    usb网络共享驱动
  • iPhone USB网络共享设置doc,iPhone USB网络共享设置
  • Android系统中如何添加USB网络共享 类别 需求 索引类别 USB网络共享 问题描述 平台是RT1296,在Android系统中已经有支持USB网络共享,但相应的产品系统中还未开启USB网络共享,那么这个时候就需要添加USB网络共享的...

    Android系统中如何添加USB网络共享

    类别

    需求

    索引类别

    USB网络共享

    问题描述

    平台是RT1296,在Android系统中已经有支持USB网络共享,但相应的产品系统中还未开启USB网络共享,那么这个时候就需要添加USB网络共享的一些配置,使得产品支持此功能。(以下是个人的一些理解,如有错误,请各位大佬多多指教)

    代码关联

    对应的代码修改部分如下:

    ①对应内核中添加配置(系统中添加USB网络驱动)

    @@ -837,3 +837,6 @@ CONFIG_ZRAM=y
     CONFIG_ZRAM_LZ4_COMPRESS=y
     CONFIG_ZSMALLOC=y
     # CONFIG_ZSMALLOC_STAT is not set
    +CONFIG_USB_USBNET=y
    +CONFIG_USB_IPHETH=y
    +CONFIG_USB_NET_RNDIS_HOST=y
    

    ②在init.rc中增加两个针对usb0的配置服务,才能让framework配置得了usb0网卡(服务是是USB网络共享的核心)

    @@ -134,3 +134,16 @@ on property:persist.iso.state=unmounted
    #在开机启动的时候会发送一个bootcomplete广播,接收广播后启动scdetect、rootshellservice
     on property:dev.bootcomplete=1
         start scdetect
         start rootshellservice
    #启动usb网络分配dhcp
    +service dhcpcd_usb0 /system/bin/dhcpcd -ABDKL -f/system/etc/dhcpcd/dhcpcd.conf
    +    class main
    +    disabled
    +    oneshot
    +    seclabel u:r:dhcp:s0
    #启动usb网络分配ip
    +service iprenew_usb0 /system/bin/dhcpcd -n
    +    class main
    +    disabled
    +    oneshot
    +    seclabel u:r:dhcp:s0
    

    ③对应Android源码,frameworks中添加配置(这边主要是讲述网络是如何启动的,是选择那个网络)

    /frameworks/base/core/res/res/values/config.xml 
         <bool name="config_enableMonitorInputSource">true</bool>
    -    <string translatable="false" name="config_ethernet_iface_regex">eth\\d</string>
    +    <string translatable="false" name="config_ethernet_iface_regex">eth\\d|usb\\d</string>
    

    上面的作用是提供两种网络的方式,一种是以太网络,一种是走usb共享

        /frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
         public synchronized void start(Context context, Handler target) {
            Log.i(TAG, "monitoring start");
            // The services we use.
            IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
            mNMService = INetworkManagementService.Stub.asInterface(b);
            mEthernetManager = (EthernetManager) context.getSystemService(Context.ETHERNET_SERVICE);
    
            //在这里就获取上面设定config_ethernet_iface_regex的值
            mIfaceMatch = context.getResources().getString(
                    com.android.internal.R.string.config_ethernet_iface_regex);
    
            // Create and register our NetworkFactory.
            mFactory = new LocalNetworkFactory(NETWORK_TYPE, context, target.getLooper());
            mFactory.setCapabilityFilter(mNetworkCapabilities);
            mFactory.setScoreFilter(-1); // this set high when we have an iface
            mFactory.register();
    
            mContext = context;
    
            // Start tracking interface change events.
            mInterfaceObserver = new InterfaceObserver();
            try {
                mNMService.registerObserver(mInterfaceObserver);
            } catch (RemoteException e) {
                Log.e(TAG, "Could not register InterfaceObserver " + e);
            }
    
            // If an Ethernet interface is already connected, start tracking that.
            // Otherwise, the first Ethernet interface to appear will be tracked.
            try {
                final String[] ifaces = mNMService.listInterfaces();
                for (String iface : ifaces) {
                    synchronized(this) {
                        //在这里判断是采用哪个网络
                        if (maybeTrackInterface(iface)) { 
                            // We have our interface. Track it.
                            // Note: if the interface already has link (e.g., if we
                            // crashed and got restarted while it was running),
                            // we need to fake a link up notification so we start
                            // configuring it. Since we're already holding the lock,
                            // any real link up/down notification will only arrive
                            // after we've done this.
                            if (mNMService.getInterfaceConfig(iface).hasFlag("running")) {
                                updateInterfaceState(iface, true);
                            }
                            break;
                        }
                    }
                }
                *
                *
                *
                *
            }
        }
    
        //在这边可以选择是走那个网络是eth还是usb         
        private boolean maybeTrackInterface(String iface) {
            // If we don't already have an interface, and if this interface matches
            // our regex, start tracking it.
            if (!iface.matches(mIfaceMatch) || isTrackingInterface())
                return false;
    
            if(UbusRpc.isOpenWrt() && !UbusRpc.isOttWifi()){
                if(!iface.equals("eth9"))
                    return false;
            } else if(!iface.equals(SystemProperties.get("net.eth.iface", "eth0"))){
                return false;
            }
    
            Log.d(TAG, "Started tracking interface " + iface);
            setInterfaceUp(iface);
            return true;
        }
    

    ④最后在设置一个属性值:setprop net.eth.iface usb0/eth0 (usb0强制网络走手机USB网络共享)

    应用层发送一个广播,这样就可以自由的切换是使用USB还是以太网。

     Intent intent = new Intent("rtk.intent.action.SET_ETH_IFACE");
     intent.putExtra("EXTRA_ETH_IFACE"," usb0/eth0 ");
     sendBroadcast(intent);
    

    对应frameworks的接收应用发送的广播代码:

    /frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetServiceImpl.java
    
    private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver(){
     @Override
     public void onReceive(Context context, Intent intent) {
     String action = intent.getAction();
     	if("rtk.intent.action.SET_ETH_IFACE".equals(action)){
     			String iface = intent.getStringExtra("EXTRA_ETH_IFACE");
    	 		if(iface==null) iface="eth0";
     			SystemProperties.set("net.eth.iface", iface);
     			Log.i(TAG, "restart EthernetNetworkFactory");
     			enforceConnectivityInternalPermission();
     			synchronized (mIpConfiguration) {
     				mTracker.stop(); 
     				//重启网络,即调用第③步的start
     				mTracker.start(mContext, mHandler); 
    			}
     		}
     	}
     };
    

    如果没有效果,请排查一下/sys/class/net/中是否有新生成一个usb0的节点,如果没有生成的话排查第①第②步是否正常开启。

    知识拓展

    参考资料:https://blog.csdn.net/tankai19880619/article/details/44559419?_t=t

    改进建议

    若有错误请指正,悉心接受大佬的指点 谢谢 ! v

    工作记录。。。。。

    展开全文
  • Android usb网络共享开关

    千次阅读 2019-08-01 13:44:36
    Android usb网络共享开关 文件: packages\apps\Settings\src\com\android\settings\TetherSettings.java packages\apps\Settings\src\com\android\settings\TetherService.java TetherSettings.java中状态变化重点...

    Android7.0 usb网络共享开关

    涉及的文件:
    packages\apps\Settings\src\com\android\settings\TetherSettings.java
    packages\apps\Settings\src\com\android\settings\TetherService.java
    frameworks\base\services\core\java\com\android\server\connectivity\Tethering.java

    TetherSettings.java中重点函数

    1. 状态变化
    private void updateState() {
        String[] available = mCm.getTetherableIfaces();
        String[] tethered = mCm.getTetheredIfaces();
        String[] errored = mCm.getTetheringErroredIfaces();
        updateState(available, tethered, errored);
    }
    
    private void updateState(String[] available, String[] tethered,
            String[] errored) {
        updateUsbState(available, tethered, errored);
        updateBluetoothState(available, tethered, errored);
    }
    
    private void updateUsbState(String[] available, String[] tethered,
            String[] errored) {
        boolean usbAvailable = mUsbConnected && !mMassStorageActive;
        int usbError = ConnectivityManager.TETHER_ERROR_NO_ERROR;
        for (String s : available) {
            for (String regex : mUsbRegexs) {
                if (s.matches(regex)) {
                    if (usbError == ConnectivityManager.TETHER_ERROR_NO_ERROR) {
                        usbError = mCm.getLastTetherError(s);
                    }
                }
            }
        }
        boolean usbTethered = false;
        for (String s : tethered) {
            for (String regex : mUsbRegexs) {
                if (s.matches(regex)) usbTethered = true;
            }
        }
        boolean usbErrored = false;
        for (String s: errored) {
            for (String regex : mUsbRegexs) {
                if (s.matches(regex)) usbErrored = true;
            }
        }
    
        if (usbTethered) {
        	// 已共享网络
            mUsbTether.setSummary(R.string.usb_tethering_active_subtext);
            mUsbTether.setEnabled(!mDataSaverEnabled);
            mUsbTether.setChecked(true);
        } else if (usbAvailable) {
            if (usbError == ConnectivityManager.TETHER_ERROR_NO_ERROR) {
            	// usb已连接,usb共享选项打开选项从灰色变为可操作
                mUsbTether.setSummary(R.string.usb_tethering_available_subtext);
            } else {
                mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
            }
            mUsbTether.setEnabled(!mDataSaverEnabled);
            mUsbTether.setChecked(false);
        } else if (usbErrored) {
            mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
            mUsbTether.setEnabled(false);
            mUsbTether.setChecked(false);
        } else if (mMassStorageActive) {
        	// usb共享和adb、访问Android存储公用一个usb,当选择浏览Android设备文件时,usb共享不可以使用
        	// 提示此时状态为文件浏览模式,usb共享不可操作
            mUsbTether.setSummary(R.string.usb_tethering_storage_active_subtext);
            mUsbTether.setEnabled(false);
            mUsbTether.setChecked(false);
        } else {
        	// usb断开连接
            mUsbTether.setSummary(R.string.usb_tethering_unavailable_subtext);
            mUsbTether.setEnabled(false);
            mUsbTether.setChecked(false);
        }
    }
    12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
    
    1. 打开usb网络共享
    private void startTethering(int choice) {
    	 if (choice == TETHERING_BLUETOOTH) {
    	     // Turn on Bluetooth first.
    	     BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    	     if (adapter.getState() == BluetoothAdapter.STATE_OFF) {
    	         mBluetoothEnableForTether = true;
    	         adapter.enable();
    	         mBluetoothTether.setSummary(R.string.bluetooth_turning_on);
    	         mBluetoothTether.setEnabled(false);
    	         return;
    	     }
    	 }
    	
    	 mCm.startTethering(choice, true, mStartTetheringCallback, mHandler);
    }
    
    @Override
    public boolean onPreferenceTreeClick(Preference preference) {
    	if (preference == mUsbTether) {
    	    if (mUsbTether.isChecked()) {
    	    	// 打开usb网络共享
    	        startTethering(TETHERING_USB);
    	    } else {
    	    	// 关闭USB网络共享
    	        mCm.stopTethering(TETHERING_USB);
    	    }
    	} else if (preference == mBluetoothTether) {
    	    if (mBluetoothTether.isChecked()) {
    	        startTethering(TETHERING_BLUETOOTH);
    	    } else {
    	        mCm.stopTethering(TETHERING_BLUETOOTH);
    	        // No ACTION_TETHER_STATE_CHANGED is fired or bluetooth unless a device is
    	        // connected. Need to update state manually.
    	        updateState();
    	    }
    	} else if (preference == mCreateNetwork) {
    	    showDialog(DIALOG_AP_SETTINGS);
    	}
    
        return super.onPreferenceTreeClick(preference);
    }
    1234567891011121314151617181920212223242526272829303132333435363738394041
    

    framework中的重点函数

    1. 追踪代码,实际会调用到Tethering.java的
    public int setUsbTethering(boolean enable) {
        if (VDBG) Log.d(TAG, "setUsbTethering(" + enable + ")");
        UsbManager usbManager = (UsbManager)mContext.getSystemService(Context.USB_SERVICE);
    
        synchronized (mPublicSync) {
            if (enable) {
                if (mRndisEnabled) {
                    final long ident = Binder.clearCallingIdentity();
                    try {
                    	// 如果对/sys/class/android_usb/android0已经设置为rndis
                    	// 对usb interface设置ip
                        tetherMatchingInterfaces(true, ConnectivityManager.TETHERING_USB);
                    } finally {
                        Binder.restoreCallingIdentity(ident);
                    }
                } else {
                    mUsbTetherRequested = true;
                    // 对/sys/class/android_usb/android0设置为rndis模式
                    usbManager.setCurrentFunction(UsbManager.USB_FUNCTION_RNDIS);
                }
            } else {
                final long ident = Binder.clearCallingIdentity();
                try {
                    tetherMatchingInterfaces(false, ConnectivityManager.TETHERING_USB);
                } finally {
                    Binder.restoreCallingIdentity(ident);
                }
                if (mRndisEnabled) {
                    usbManager.setCurrentFunction(null);
                }
                mUsbTetherRequested = false;
            }
        }
        return ConnectivityManager.TETHER_ERROR_NO_ERROR;
    }
    1234567891011121314151617181920212223242526272829303132333435
    
    1. rndis、adb、mtp等功能都是复用/sys/class/android_usb/android0设备,可以通过对设备写不同的值进行切换或者几个功能共存。在UsbService中对sys.usb.config设置不同的值,在rc文件中处理,如下
    ...
    on property:sys.usb.config=ptp
        write /sys/class/android_usb/android0/enable 0
        write /sys/class/android_usb/android0/idVendor 1f3a
        write /sys/class/android_usb/android0/idProduct 1008
        write /sys/class/android_usb/android0/functions ${sys.usb.config}
        write /sys/class/android_usb/android0/enable 1
        setprop sys.usb.state ${sys.usb.config}
    
    on property:sys.usb.config=ptp,adb
        write /sys/class/android_usb/android0/enable 0
        write /sys/class/android_usb/android0/idVendor 1f3a
        write /sys/class/android_usb/android0/idProduct 1009
        write /sys/class/android_usb/android0/functions ${sys.usb.config}
        write /sys/class/android_usb/android0/enable 1
        start adbd
        setprop sys.usb.state ${sys.usb.config}
    
    on property:sys.usb.config=rndis
        write /sys/class/android_usb/android0/enable 0
        write /sys/class/android_usb/android0/idVendor 1f3a
        write /sys/class/android_usb/android0/idProduct 100a
        write /sys/class/android_usb/android0/functions ${sys.usb.config}
        write /sys/class/android_usb/android0/bDeviceClass 224
        write /sys/class/android_usb/android0/enable 1
        setprop sys.usb.state ${sys.usb.config}
    
    on property:sys.usb.config=rndis,adb
        write /sys/class/android_usb/android0/enable 0
        write /sys/class/android_usb/android0/idVendor 1f3a
        write /sys/class/android_usb/android0/idProduct 100b
        write /sys/class/android_usb/android0/functions ${sys.usb.config}
        write /sys/class/android_usb/android0/bDeviceClass 224
        write /sys/class/android_usb/android0/enable 1
        start adbd
        setprop sys.usb.state ${sys.usb.config}
    ...
    
    展开全文
  • USB网络共享.rar

    2020-09-16 04:17:14
    LAN,WLAN或Internet远程共享USB设备,就像直接连接到您的计算机一样!USB Redirector提供快速解决您的远程USB需求,它使用常规TCP / IP连接进行通信。从Windows计算机连接到Windows计算机,共享USB设备,方便虚拟化...
  • 新款TP-LINK无线路由器,不但满足双频无线路由器的基本需求,还增加了可接移动存储设备的USB接口。那么,TP-Link无线路由器怎么USB共享...针对此问题,本文就为大家图文详细介绍TP-Link无线路由器设置USB网络共享的步骤
  • usb 网络共享无法选择

    千次阅读 2017-09-12 10:03:27
    最近碰到一个bug,设置中usb 网络共享无法选择,跟了一下code 后总结一下(版本是android 4.4) Setting 中详细code 不做总结,主要是最后调用的地方: (code 路径是:packages/app/Settings/****/TetherSettings...

    请转载的朋友表明出处:

    http://blog.csdn.net/shift_wwx/article/details/77941434


    最近碰到一个bug,设置中usb 网络共享无法选择,跟了一下code 后总结一下(版本是android 4.4)


    Setting 中详细code 不做总结,主要是最后调用的地方:

    (code 路径是:packages/app/Settings/****/TetherSettings.java)

        private void setUsbTethering(boolean enabled) {
            ConnectivityManager cm =
                (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            mUsbTether.setChecked(false);
            if (cm.setUsbTethering(enabled) != ConnectivityManager.TETHER_ERROR_NO_ERROR) {
                mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
                return;
            }
            mUsbTether.setSummary("");
        }


    最终调用到cm.setUsbTethering(enabled):

    (code 路径是: frameworks/base/services/****/ConnectivityService.java)

        public int setUsbTethering(boolean enable) {
            enforceTetherChangePermission();
            if (isTetheringSupported()) {
                return mTethering.setUsbTethering(enable);
            } else {
                return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
            }
        }


    下一步是Tethering.java:

    (code 路径是 frameworks/base/services/****/Tethering.java)

        public int setUsbTethering(boolean enable) {
            if (VDBG) Log.d(TAG, "setUsbTethering(" + enable + ")");
            UsbManager usbManager = (UsbManager)mContext.getSystemService(Context.USB_SERVICE);
    
            synchronized (mPublicSync) {
                if (enable) {
                    if (mRndisEnabled) {
                        tetherUsb(true);
                    } else {
                        mUsbTetherRequested = true;
                        usbManager.setCurrentFunction(UsbManager.USB_FUNCTION_RNDIS, false);
                    }
                } else {
                    tetherUsb(false);
                    if (mRndisEnabled) {
                        usbManager.setCurrentFunction(null, false);
                    }
                    mUsbTetherRequested = false;
                }
            }
            return ConnectivityManager.TETHER_ERROR_NO_ERROR;
        }

    ---->

        private void tetherUsb(boolean enable) {
            if (VDBG) Log.d(TAG, "tetherUsb " + enable);
    
            String[] ifaces = new String[0];
            try {
                ifaces = mNMService.listInterfaces();
            } catch (Exception e) {
                Log.e(TAG, "Error listing Interfaces", e);
                return;
            }
    
            final String usbSysctlKey = "sys.usb.tethering";
            SystemProperties.set(usbSysctlKey, "false");
    
            if (enable) {
                SystemProperties.set(usbSysctlKey, "true");
            }
    
            for (String iface : ifaces) {
                Log.d(TAG, "iface: " + iface);
                if (isUsb(iface)) {
                    int result = (enable ? tether(iface) : untether(iface));
                    if (result == ConnectivityManager.TETHER_ERROR_NO_ERROR) {
                        return;
                    }
                }
            }
            Log.e(TAG, "unable start or stop USB tethering");
        }

    看到这里,大概可以猜到无法成功选择的原因:

    1、ifaces = mNMService.listInterfaces(); 出现异常,catch 中直接return

    2、同样 1 这句话,可能获取的ifaces 不存在(是否存在,可以在下面的循环中加上log,贴出来的code 中已经加上log)

    3、循环中 isUsb(iface) 返回为false


    对于上面的三个问题,我一一做了排查,最后发现是isUsb这个函数出现的问题:

        private boolean isUsb(String iface) {
            synchronized (mPublicSync) {
                for (String regex : mTetherableUsbRegexs) {
                    if (iface.matches(regex)) return true;
                }
                return false;
            }
        }
    也就是iface 必须要是符合一定的规则,而变量mTetherableUsbRegexs 就是所谓的规则。


    找到mTetherableUsbRegexs 定义个赋值的地方:

        void updateConfiguration() {
            String[] tetherableUsbRegexs = mContext.getResources().getStringArray(
                    com.android.internal.R.array.config_tether_usb_regexs);
            String[] tetherableWifiRegexs = mContext.getResources().getStringArray(
                    com.android.internal.R.array.config_tether_wifi_regexs);
            String[] tetherableBluetoothRegexs = mContext.getResources().getStringArray(
                    com.android.internal.R.array.config_tether_bluetooth_regexs);
    
            int ifaceTypes[] = mContext.getResources().getIntArray(
                    com.android.internal.R.array.config_tether_upstream_types);
            Collection<Integer> upstreamIfaceTypes = new ArrayList();
            IBinder b = ServiceManager.getService(Context.CONNECTIVITY_SERVICE);
            IConnectivityManager cm = IConnectivityManager.Stub.asInterface(b);
            try {
                int activeNetType = cm.getActiveNetworkInfo().getType();
                for (int i : ifaceTypes) {
                    if(i == activeNetType) {
                        upstreamIfaceTypes.add(new Integer(i));
                    }
                }
            } catch (Exception e) {
                Log.d(TAG, "Exception adding default nw to upstreamIfaceTypes: " + e);
            }
            for (int i : ifaceTypes) {
                if(!upstreamIfaceTypes.contains(new Integer(i))) {
                    upstreamIfaceTypes.add(new Integer(i));
                }
            }
    
            synchronized (mPublicSync) {
                mTetherableUsbRegexs = tetherableUsbRegexs;
                mTetherableWifiRegexs = tetherableWifiRegexs;
                mTetherableBluetoothRegexs = tetherableBluetoothRegexs;
                mUpstreamIfaceTypes = upstreamIfaceTypes;
            }
    
            // check if the upstream type list needs to be modified due to secure-settings
            checkDunRequired();
        }
    最终知道变量mTetherableUsbRegexs 来源于config:

    com.android.internal.R.array.config_tether_usb_regexs


    最终确定的是这个config 必须要配置,android 源生是没有这样配置的,需要在overlay 中做配置,如下:

        <string-array translatable="false" name="config_tether_usb_regexs">                                
            <item>"usb\\d"</item>                                                                          
            <item>"rndis\\d"</item>                                                                        
        </string-array>

    这样,只要驱动给出来的interface 是rndis0 即可,bug 就算解决了



    后话:

    总结的时候是在一个低版本的平台中发现的问题,所以就总结了低版本的code,我看了下 android 7.1 的版本,逻辑上做了稍微的调整,功能上设计是一样的,最终同样调用到的还是Tethering.java 中的setUsbTethering。



















    展开全文
  • USB网络共享驱动 for台式机 xp系统 USB网络共享驱动 for台式机 xp系统
  • usb 网络共享工具

    2017-04-18 21:08:47
    手机充当无线路由 连接台式
  • Android手机通过USB网络共享限速

    千次阅读 2014-03-29 16:22:57
    在 Android上都有USB网络共享的功能,可以直接在手机上通过USB口使用电脑端的网络,有些手机叫“USB绑定”,有些手机叫“网络共享”。 简单说明一下USB网络共享的原理: 1, 手机端通过USB口连接电脑,选择共享...

    在 Android上都有USB网络共享的功能,可以直接在手机上通过USB口使用电脑端的网络,有些手机叫“USB绑定”,有些手机叫“网络共享”。


    简单说明一下USB网络共享的原理:
    1, 手机端通过USB口连接电脑,选择共享之后,电脑端会将手机识别为网卡usb0;
    2, 手机端将usb0添加为对应的网关;
    3, 在电脑端做端口转发,经过usb0网卡的内容转发到真实的网卡上面;
    这样我们可能让手机使用PC端网络,同时在PC端对这个网络进行控制。

    #!/bin/bash
    #1.设置手机的usb代理网络
    #2.在pc端以root权限执行该脚本
    ANDROID_SDK=/home/xxx/android-sdk
    ifconfig usb0 192.168.42.1 netmask 255.255.255.0
    ${ANDROID_SDK}/platform-tools/adb shell su -c "busybox route add default gw 192.168.42.1" #手机需要先root,并有busybox
    ${ANDROID_SDK}/platform-tools/adb shell su -c "setprop net.dns1 8.8.8.8"
    sysctl -w net.ipv4.ip_forward=1
    iptables -t nat -A POSTROUTING -s 192.168.42.1/24 -j SNAT --to-source 192.168.43.31 #此处修改为PC的真实网卡IP
    wondershaper usb0 102 1024 #限速命令,需要先安装sudo apt-get install wondershaper



    展开全文
  • 「开启USB调试」和「开启USB网络共享」究竟选哪个进行有线同屏?今天的小E课堂中,我将带大家看看这两者的区别,以及应该用哪个比较好。一、USB调试小E直接先用百度百科的词条内容说明定义。USB调试模式是 Android ...
  • USB驱动之USB网络共享

    千次阅读 2018-03-09 09:55:46
    一 编译USB/IP组件 USB/IP组件包含两部分:USB/IP协议栈和USB/IP驱动模块 USB/IP协议栈源码位于linux_kernel/tools/usb/usbip USB/IP驱动模块位于linux_kernel/drivers/usb/usbip 1. 1.1编译USB/IP协议栈 1 进入...
  • Android手机有一个USB网络共享功能。 Android手机连接Windows电脑,打开“设置”-“网络共享”,打开“usb网络共享”,电脑端提示安装RNDIS驱动,驱动安装完毕,电脑就可以通过手机网络上网。 现在目的AIO-3399J...
  • USBShare2.1汉化破解版 usb over 4.7.4汉化破解版 两个usb共享破解破工具
  • 如题,公司的内网插网线就能获取IP的,可以上公司网站,而用USB网络共享的网可以上百度之类 要怎么配置才能使eth0和usb0能同时上网? 用无线网卡的话用以下三句话可以上网: route add -...
  • 本文原创,版权属作者个人所有,如需转载请联系作者本人。Q&微:155122733 ------------------------------------------------------------------------------...2 手机通过usb连接电脑,手机端打开usb网络共享...
  • 没有的可以略过了原始需求是这样的,需要连通一台没有无线网卡的台式机和一台没有以太网的笔记本(手头上也没有网线),正好手上有安卓手机(年度街机K30pro)和数据线,于是寻思用USB插台式机上开USB网络共享...
  • Openwrt-USB网络共享

    万次阅读 2019-01-23 15:03:32
    1.openwrt 使用 android 手机usb tether联网 openwrt是一个是个用于嵌入式设备的linux发行版,支持目前市面上大量的路由器设备。基于buildroot构建的文件系统使其拥有海量的可用软件包,具有超强的拓展能力,移植,...
  • 该驱动程序实现了Microsoft 专有的RNDIS协议...与其他网络共享解决方案相比,HoRNDIS的主要优势在于它使用了手机固件中的一流支持功能。其他解决方案要么在没有Android操作系统知识的情况下接管手机的Wi-Fi堆栈,要...
  • 1.首先需要把手机连接到电脑,在手机上打开USB网络共享。2.打开设备管理器3.在网络适配器中,找到Remote NDIS based Internet Sharing Device,右键更新驱动4.选择第二项浏览计算机以查找驱动程序软件5.这里选择下面...
  • CDC EEM-USB网络共享

    2021-02-10 10:02:49
    客户用我们的台式Android 7 高通设备通过母口USB上网,开机一段时间内会出现ping不通的问题排查。 1.CDC EEM USB设备插入上位机时,会被usbnet_probe()识别为USB网卡设备,然后进一步被识别为CDC EEM设备,是根据...
  • 智能手机usb网络共享

    千次阅读 2014-05-22 02:25:24
    USB连接上电脑后,在手机的设置选项里选择USB共享网络,这时你的电脑网络连接里会多出一个网络连接2来。你可以将他重命名为手机网络,这时要是你的手机流量足够,你就可以在没有宽带的地方用手机流量上网络,还有另...
  • 上一个项目,公司做的无人机(开发板用的是高通的9342 wifi平台,linux 内核为2.6.31)需要跟手机通讯,是通过USB网络共享实现的。 最终9342 开发板实现了与android和ios手机(iphone/ipad等)的usb网络共享功能。 ...
  • iphone与设备通过usb共享,因为开源的usb驱动ipheth.c存在bug,当数据量较大时连接断开。这里解决了设备端这个驱动的bug。
  • 上网篇:USB网络共享

    千次阅读 2017-02-19 10:46:26
    可能大家都会直接问管理员要了,但是尴尬的是我不...一根USB数据线方案一我在手机上安装WiFi万能钥匙,然后顺利的破解了图书馆WiFi密码,电脑上下载的PC版WiFi钥匙,根据指示我们需要将手机和电脑连接起来,然后使用一
  • 去报USB已经使用NTFS文件系统格式化,当前USB的盘符为“F:”,创建ADS,README.txt.settingcontent-ms:R 包含DLL: type dll_payload.dll > F:README.txt.settingcontent-ms:R READNE.txt.settingcontent-ms:T.txt ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,209
精华内容 483
关键字:

usb网络共享