¿Cómo puedo habilitar la conexión USB a través de ADB? [duplicar]

Estaba pasando por este enlace . pero no puedo encontrar una manera de habilitar la conexión USB a través de adb. ¿Hay alguna otra manera en que pueda hacerlo?

¿Qué versión de Android estás usando?
@xavier_fakerat Turrón de Android 7.1
El valor 33debería funcionar
Por favor, confirme si le está funcionando.

Respuestas (3)

adb shell am start -n com.android.settings/.TetherSettings && adb shell input keyevent 20 && adb shell input keyevent 20 && adb shell input keyevent KEYCODE_ENTER && sleep 2 && adb shell input keyevent 4

Se necesita root para ejecutar estos comandos:

Los siguientes comandos llaman ConnectivityManager.setUsbTethering(boolean enable)en Android 4.3:

adb shell su -c service call connectivity 34 i32 1activa la conexión USB.

adb shell su -c service call connectivity 34 i32 0desactiva la conexión USB.

Para otras versiones de Android, reemplace 34con los siguientes setUsbTetheringcódigos de llamada según la versión de Android:

4.4.4: 34
5.1.0: 30
6.0.1: 30
7.0.0: 33

Créditos

¿Es posible conectar por USB un dispositivo Android usando adb a través de la terminal ?

el mío funcionó con 31 para nightly owl ejecutando android lollipop en GT-n7000
@xavier_fakerat Probé este comando en Google Pixel con Oreo instalado (rooteado) y no funciona. Verifiqué que el número de método es 33 setUsbTethering. El error que recibo es "el paquete de llamadas no puede ser nulo". ¿Alguna idea de cómo puedo solucionar esto? ¿Cómo especificar el paquete de llamadas para la llamada de servicio? Si ayuda, si instalo la compilación de depuración del usuario, funciona. Pero no en la compilación de producción que está enraizada.

El servicemétodo no me funcionó en mi dispositivo Samsung. Sin embargo, descubrí cómo hacerlo configurando la interfaz de red directamente. Aquí hay una secuencia de comandos que configura una máquina Linux y un dispositivo Android enraizado conectado por USB para conexión USB. Esto no configura el enmascaramiento de DNS o NAT, pero es suficiente para que el dispositivo sea accesible en 192.168.42.129:

#!/bin/bash
set -euo pipefail

# Set up USB tethering for an Android device.
# Usage: adb-usb-tether [USB-VENDOR USB-PRODUCT]
# If USB vendor/product is unspecified, use first USB network interface.
# On the Android side, tethering is enabled via adb shell.

if [[ $# -eq 2 ]]
then
    any=false
    vendor=$1
    product=$2
else
    any=true
fi

function find_if() {
    local path if
    for path in /sys/class/net/*
    do
        if=$(basename "$path")
        if [[ "$(readlink "$path")" == */usb* ]]
        then
            local ifproduct ifvendor
            ifproduct=$(cat "$(realpath "$path")/../../../idProduct")
            ifvendor=$(cat "$(realpath "$path")/../../../idVendor")
            if $any || [[ "$ifproduct" == "$product" && "$ifvendor" == "$vendor" ]]
            then
                echo "Found interface: $if" 1>&2
                echo "$if"
                return
            fi
        fi
    done
}

function adb_shell() {
    adb shell "$(printf " %q" "$@")"
}

function adb_su() {
    local quoted
    quoted="$(printf " %q" "$@")"
    adb shell su -c "$(printf %q "$quoted")"
}

if=$(find_if)
if [[ -z "$if" ]]
then
    echo "Requesting interface:" 1>&2
    adb_su setprop sys.usb.config rndis,adb
    echo " >> OK" 1>&2
fi

while [[ -z "$if" ]]
do
    echo "Waiting for network device..." 1>&2
    sleep 1
    if=$(find_if)
done

while ! ( ip link | grep -qF "$if" )
do
    echo "Waiting for interface..." 1>&2
    sleep 1
done

function configure_net() {
    local name="$1"
    local if="$2"
    local ip="$3"
    local table="$4"
    local cmdq="$5" # Query command
    local cmdx="$6" # Configuration command

    if ! ( "$cmdq" ip addr show dev "$if" | grep -qF 192.168.42."$ip" )
    then
        echo "Configuring $name interface address:" 1>&2
        "$cmdx" ip addr add 192.168.42."$ip"/24 dev "$if"
        echo " >> OK" 1>&2
    fi

    if ( "$cmdq" ip addr show dev "$if" | grep -qF 'state DOWN' )
    then
        echo "Bringing $name interface up:" 1>&2
        "$cmdx" ip link set dev "$if" up
        sleep 1
        echo " >> OK" 1>&2
    fi

    if ! ( "$cmdq" ip route show table "$table" | grep -qF "192.168.42.0/24 dev $if" )
    then
        echo "Configuring $name route:" 1>&2
        "$cmdx" ip route add table "$table" 192.168.42.0/24 dev "$if"
        echo " >> OK" 1>&2
    fi
}

configure_net local  "$if"   128 main  command   sudo
configure_net device rndis0  129 local adb_shell adb_su