명령 줄에서 “USB 테 더링”Android 설정을 활성화 할 수 있습니까? 줄을 실행할 가능성이 있습니까? 편집 1 : 다음 명령은

bash 스크립트 내에서 “USB 테 더링”을 활성화하고 싶습니다. adb shell일부 Android 설정을 변경하기 위해 명령 줄을 실행할 가능성이 있습니까?

편집 1 :

다음 명령은 필요한 설정을 열지 만 아무것도 변경하지는 않습니다.

am start -n com.android.settings/.TetherSettings

에서 TetherSettings 작업 이름을 찾았 습니다.

aapt dump xmltree com.android.settings.apk AndroidManifest.xml | less +/ether


답변

루트로 다음 명령을 실행하면 USB 테 더링이 활성화됩니다.

  • service call connectivity 32 i32 1 아이스크림 샌드위치 (4.0)
  • service call connectivity 33 i32 1 젤리 빈 (4.1 ~ 4.3)
  • service call connectivity 34 i32 1 KitKat (4.4)
  • service call connectivity 30 i32 1 롤리팝 (5.0)
  • service call connectivity 31 i32 1Firelord 의 답변 에 따라 Lollipop (5.1)
  • service call connectivity 30 i32 1마시멜로 (6.0)에서 테스트되지 않음
  • service call connectivity 41 i32 1 삼성 마시멜로 (6.0)
  • service call connectivity 33 i32 1 누가 (7.0)
  • service call connectivity 39 i32 1 삼성 누가 (7.0)

명령에 표시되는 첫 번째 숫자는 setUsbTethering()메서드의 숫자입니다 IConnectivityManager.aidl(이것은 Android 버전에 따라 다르며 Gingerbread에는 없습니다).

(팁 :이 파일에서 특정 Android 버전을 확인하려면 적절한 지점을 선택하십시오.)

따라서이 명령은 setUsbTethering()1 (USB 테 더링 활성화) 또는 0 (비활성화)을 호출 하여 전달합니다.

자세한 내용 은 Stack Overflow 관련 질문을 참조하십시오 .


USB 리버스 테 더링 설정의 일부로 USB 테 더링을 활성화하는 setprop sys.usb.config rndis,adb경우 rndis0인터페이스를 설정하기에 충분해야 합니다.


답변

를 사용하여 꽤 나쁜 방법 adb shell input tap이 있습니다. 테 더링 및 대체를 활성화하기위한 좌표를 가져옵니다.

adb shell input tap <x> <y>

또는을 사용하여 라디오를 활성화하십시오 adb shell input keyevent. 그냥보세요

adb shell input

다시 이것은 특정 장치에 국한됩니다.


답변

setprop아래 명령을 시도하십시오 :

setprop sys.usb.config rndis,adb

답변

절전 모드 대신 Windows 시간 초과 명령을 사용하고 화면을 먼저 깨운 다음 ​​한 번만 누르도록 수정되었습니다. 휴대 전화에서 Wi-Fi 테 더링을 두 번 사용 중지했습니다.

adb shell input keyevent KEYCODE_WAKEUP && adb shell am start -n com.android.settings/.TetherSettings && adb shell input keyevent KEYCODE_DPAD_DOWN && adb shell input keyevent KEYCODE_ENTER && timeout 2 && adb shell input keyevent KEYCODE_BACK

답변

service방법은 Samsung 장치에서 작동하지 않았습니다. 그래도 네트워크 인터페이스를 직접 구성하여 방법을 알아 냈습니다. 다음은 Linux 테 더링을 위해 Linux 시스템 및 USB 연결 루팅 된 Android 장치를 설정하는 스크립트입니다. 이것은 DNS 또는 NAT 마스커레이딩을 설정하지 않지만 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

전달을 활성화하려면 (예 : Android 장치를 통해 PC에서 인터넷에 연결) 내 질문 및 답변을 참조 하십시오 .


답변

이것은 장치 독립적입니다 (USB 테 더링을 토글합니다)

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