Giter Site home page Giter Site logo

vpnhotspot's Introduction

VPN Hotspot

CircleCI API Releases Language: Kotlin Codacy Badge License

(beta) SHA-256 fingerprint of the code transparency key certificate (must be compared with the developer's public key manually): C8 70 92 46 B3 32 22 6F 33 57 05 B4 5C 37 83 81 65 67 42 44 1B DC CC B2 96 1B 66 4D CF 4C 74 BC

Connecting things to your VPN made simple. Share your VPN connection over hotspot or repeater. (root required)

This app is useful for:

  • Connecting things that don't support VPN like Chromecasts behind corporate firewalls;
  • Setting up gapps behind corporate firewalls;
  • Connecting to your mobile hotspot but you're not bothered to set up VPN on your device;
  • Identifying, monitoring and blocking (unwanted) clients;
  • Bypassing tethering limits by:
    • (recommended) Use this app with a real VPN/socksifier;
    • Use this app with some adblock/DNS apps that uses system VPN service APIs, i.e. fake VPNs; (troubleshooting/a list of apps that work)
    • Try your luck and simply use this app.

P.S. You can also do the similar on Windows, Mac, and iOS. I don't know about you but I can't get my stupid Windows 10 to work with hosted network now that they introduced this Mobile hotspot.

Features That Requires System App Installation

The following features in the app requires it to be installed under /system/priv-app since some restricted permissions are required. One way to do this is to use App systemizer for Magisk.

  • (Android 8-10, since app v2.4.0) android.permission.OVERRIDE_WIFI_CONFIG: Read/write system Wi-Fi hotspot configuration. (#117)

Installing as system app also has the side benefit of launching root daemon less frequently due to having privileged permissions listed below.

  • android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
  • android.permission.LOCAL_MAC_ADDRESS
  • android.permission.MANAGE_USB
  • android.permission.OVERRIDE_WIFI_CONFIG
  • android.permission.READ_WIFI_CREDENTIAL
  • android.permission.TETHER_PRIVILEGED
  • android.permission.WRITE_SECURE_SETTINGS

Whenever you install an app update, if there was a new protected permission addition (last updated in v2.17.1), you should update the app installed in system as well to make the system grant the privileged permission.

Settings and How to Use Them

Default settings are picked to suit general use cases and maximize compatibility but it might not be optimal for battery life.

Upstream

  • Upstream network interface: Main upstream regex used to reroute traffic. Leave blank for auto detect system VPN (allow/do not bypass this app to use VPN for it to work). Put none (or a^ or other similarly invalid entries) to suppress tethering VPN.
  • Fallback upstream: Fallback upstream is used when some VPN leave certain routes fallback to default network interface. Leave blank for auto detect. Put none (or a^ or other similarly invalid entries) to forbid falling back. Put other interface name if you feel like it.
  • IP Masquerade Mode:
    • None: Nothing will be done to remap address/port from downstream. I find turning this option off sometimes works better for dummy VPNs like ad-blockers and socksifiers than Simple mode, e.g. Shadowsocks. But you should never use this for real VPNs like OpenVPN, etc.
    • Simple: Source address/port from downstream packets will be remapped and that's about it.
    • Android Netd Service: Let your system handle masquerade. Android system will do a few extra things to make things like FTP and tethering traffic counter work. You should probably not use this if you are trying to hide your tethering activity from your carrier.

Downstream

  • Disable IPv6 tethering: Turning this option on will disable IPv6 for system tethering. Useful for stopping IPv6 leaks as this app currently doesn't handle IPv6 VPN tethering (see #6).
  • Tethering hardware acceleration: This is a shortcut to the same setting in system Developer options. Turning this option off is probably a must for making VPN tethering over system tethering work, but it might also decrease your battery life while tethering is enabled.
  • Enable DHCP workaround: Only used if your device isn't able to get your clients IP addresses with VPN on. This is a global setting, meaning it will only be applied once globally.

Misc

  • Keep Wi-Fi alive: Acquire Wi-Fi locks when repeater, temporary hotspot or system VPN hotspot is activated.
    • Choose "System default" (default since Android 10) to save battery life;
    • (prior to Android 10) Choose "On" (default) if repeater/hotspot turns itself off automatically or stops working after a while;
    • (prior to Android 10) Choose "High Performance Mode" to minimize packet loss and latency (will consume more power);
    • (since Android 10) Choose "Disable power save" to decrease packet latency. An example use case is when a voice connection needs to be kept active even after the device screen goes off. Using this mode may improve the call quality. Requires support from the hardware. Deprecated in Android 14 and is automatically replaced with "Low latency mode". Deprecation is due to the impact of it on power dissipation. The "Low latency mode" provides much of the same desired functionality with less impact on power dissipation.
    • (since Android 10) Choose "Low latency mode" to optimize for reduced packet latency, and this might result in:
      1. Reduced battery life.
      2. Reduced throughput.
      3. Reduced frequency of Wi-Fi scanning. This may cause the device not roaming or switching to the AP with highest signal quality, and location accuracy may be reduced. Example use cases are real time gaming or virtual reality applications where low latency is a key factor for user experience. Requires support from the hardware. Note: Requires this app running in foreground with screen on.
  • Start repeater on boot: Self explanatory.
  • Repeater safe mode: (Android 10, March 2020 security patch or newer) You might be required to turn this mode off if you want to use short SSID (at most 8 bytes long). Unsafe mode might not work for your device, and there is a small chance you will soft brick your device (recoverable). See #153 for more information.
  • Use system configuration for temporary hotspot: (Android 11 or newer) Attempt to start a temporary hotspot using system Wi-Fi hotspot configuration. This feature is most likely only functional on Android 12 or newer. Enabling this switch will also prevent other apps from using the local-only hotspot functionality.
  • Network status monitor mode: This option controls how the app monitors connected devices as well as interface changes (when custom upstream is used). Requires restarting the app to take effects. (best way is to go to app info and force stop)
    • Netlink monitor: Use Linux netlink mechanism, most battery efficient but may not work with SELinux enforcing mode. Sometimes auto fallbacks to Netlink monitor with root and Poll.
    • Netlink monitor with root: Same as above but runs netlink as root. This option works well with SELinux enforcing mode but might still be bugged on devices heavily modified by OEM and/or carriers. Sometimes auto fallbacks to Poll.
    • Poll: (default) Update network information manually every second. Least battery efficient but it should work on most devices. Recommended to switch to other modes if possible.
    • Poll with root: Same as Poll but polling is done using a root shell.

Q & A

Search the issue tracker for more.

Failed to create group due to internal error/repeater shuts down after a while?

This could caused by the Wi-Fi channel you selected is no longer available, due to:

  1. Your device doesn't support operating on this channel, or
  2. There is some nearby Wi-Fi direct device that broadcasted that it can't operate on the channel you picked.

For maximum stability, you need to set channel = 0 so that your device will pick a channel automatically. You can also use WPS to connect your 2.4GHz-only device to force the repeater to switch from 5GHz to 2.4GHz for this time.

Private APIs used / Assumptions for Android customizations

a.k.a. things that can go wrong if this app doesn't work.

This is a list of stuff that might impact this app's functionality if unavailable. This is only meant to be an index. You can read more in the source code. API restrictions are updated up to SHA-256 checksum 7aa0987aea4b25f5371b7e377c9f37375ada3b7e30465c0e2d910a5b646c10c1.

Greylisted/blacklisted APIs or internal constants: (some constants are hardcoded or implicitly used)

  • (prior to API 30) Landroid/net/ConnectivityManager;->getLastTetherError(Ljava/lang/String;)I,max-target-r
  • (since API 33) Landroid/net/ConnectivityManager;->FIREWALL_CHAIN_LOCKDOWN_VPN:I,blocked
  • (since API 33) Landroid/net/ConnectivityManager;->FIREWALL_RULE_ALLOW:I,blocked
  • (since API 30) Landroid/net/ConnectivityModuleConnector;->IN_PROCESS_SUFFIX:Ljava/lang/String;
  • (since API 29, prior to API 33) Landroid/net/INetd$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetd;
  • (since API 29, prior to API 33) Landroid/net/INetd;->firewallRemoveUidInterfaceRules([I)V
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onTetherableInterfaceRegexpsChanged(Landroid/net/TetheringManager$TetheringInterfaceRegexps;)V,blocked
  • (since API 31) Landroid/net/TetheringManager$TetheringEventCallback;->onSupportedTetheringTypes(Ljava/util/Set;)V,blocked
  • (since API 33) Landroid/net/connectivity/android/net/BpfNetMapsConstants;->IIF_MATCH:J,blocked
  • (since API 33) Landroid/net/connectivity/android/net/BpfNetMapsConstants;->LOCKDOWN_VPN_MATCH:J,blocked
  • (since API 33) Landroid/net/connectivity/android/net/UidOwnerValue;-><init>(IJ)V,blocked
  • (since API 33) Landroid/net/connectivity/android/net/UidOwnerValue;->rule:J,blocked
  • (since API 33) Landroid/net/connectivity/com/android/net/module/util/BpfMap;-><init>(Ljava/lang/String;ILjava/lang/Class;Ljava/lang/Class;)V,blocked
  • (since API 33) Landroid/net/connectivity/com/android/net/module/util/BpfMap;->deleteEntry(Landroid/net/connectivity/com/android/net/module/util/Struct;)Z,blocked
  • (since API 33) Landroid/net/connectivity/com/android/net/module/util/BpfMap;->getValue(Landroid/net/connectivity/com/android/net/module/util/Struct;)Landroid/net/connectivity/com/android/net/module/util/Struct;,blocked
  • (since API 33) Landroid/net/connectivity/com/android/net/module/util/BpfMap;->updateEntry(Landroid/net/connectivity/com/android/net/module/util/Struct;Landroid/net/connectivity/com/android/net/module/util/Struct;)V,blocked
  • (since API 33) Landroid/net/connectivity/com/android/net/module/util/Struct$S32;-><init>(I)V,blocked
  • (since API 31) Landroid/net/wifi/SoftApCapability;->getCountryCode()Ljava/lang/String;,blocked
  • (since API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setRandomizedMacAddress(Landroid/net/MacAddress;)Landroid/net/wifi/SoftApConfiguration$Builder;,blocked
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->BAND_TYPES:[I,blocked
  • (since API 31) Landroid/net/wifi/SoftApInfo;->getApInstanceIdentifier()Ljava/lang/String;,blocked
  • (since API 31) Landroid/net/wifi/WifiClient;->getApInstanceIdentifier()Ljava/lang/String;,blocked
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration$KeyMgmt;->FT_PSK:I,lo-prio,max-target-o
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration$KeyMgmt;->WPA_PSK_SHA256:I,blocked
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration;->AP_BAND_2GHZ:I,lo-prio,max-target-o
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration;->AP_BAND_5GHZ:I,lo-prio,max-target-o
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration;->AP_BAND_ANY:I,lo-prio,max-target-o
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration;->apBand:I,unsupported
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration;->apChannel:I,unsupported
  • (since API 30) Landroid/net/wifi/WifiContext;->ACTION_RESOURCES_APK:Ljava/lang/String;,blocked
  • (prior to API 30) Landroid/net/wifi/WifiManager$SoftApCallback;->onNumClientsChanged(I)V,greylist-max-o
  • Landroid/net/wifi/WifiManager;->cancelLocalOnlyHotspotRequest()V,unsupported
  • Landroid/net/wifi/p2p/WifiP2pConfig$Builder;->MAC_ANY_ADDRESS:Landroid/net/MacAddress;,blocked
  • (since API 29) Landroid/net/wifi/p2p/WifiP2pConfig$Builder;->mNetworkName:Ljava/lang/String;,blocked
  • Landroid/net/wifi/p2p/WifiP2pManager;->startWps(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/WpsInfo;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V,unsupported
  • (prior to API 30) Landroid/provider/Settings$Global;->SOFT_AP_TIMEOUT_ENABLED:Ljava/lang/String;,lo-prio,max-target-o
  • (prior to API 30) Lcom/android/internal/R$array;->config_tether_bluetooth_regexs:I,max-target-q
  • (prior to API 30) Lcom/android/internal/R$array;->config_tether_usb_regexs:I,max-target-q
  • (prior to API 30) Lcom/android/internal/R$array;->config_tether_wifi_regexs:I,max-target-q
  • (on API 29) Lcom/android/internal/R$bool;->config_wifi_p2p_mac_randomization_supported:I,blacklist
  • (prior to API 30) Lcom/android/internal/R$integer;->config_wifi_framework_soft_ap_timeout_delay:I,greylist-max-o
  • Lcom/android/internal/R$string;->config_ethernet_iface_regex:I,lo-prio,max-target-o
  • (since API 29) Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;->ANONYMIZED_DEVICE_ADDRESS:Ljava/lang/String;
  • (since API 33) Lcom/android/server/BpfNetMaps;-><init>()V
  • (since API 33) Lcom/android/server/BpfNetMaps;-><init>(Landroid/content/Context;)V
  • (since API 33) Lcom/android/server/BpfNetMaps;->native_init()V
  • (since API 33) Lcom/android/server/BpfNetMaps;->native_init(Z)V
  • (since API 33) Lcom/android/server/BpfNetMaps;->native_setUidRule(III)I
  • (since API 33) Lcom/android/server/BpfNetMaps;->native_removeUidInterfaceRules([I)I
  • (since API 33) Lcom/android/server/BpfNetMaps;->native_updateUidLockdownRule(IZ)I
  • (since API 33) Lcom/android/server/BpfNetMaps;->sInitialized:Z
  • (since API 30) Lcom/android/server/SystemServer;->TETHERING_CONNECTOR_CLASS:Ljava/lang/String;
  • Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;I)V,unsupported
  • Ljava/lang/invoke/MethodHandles$Lookup;->ALL_MODES:I,lo-prio,max-target-o
  • (prior to API 29) Ljava/net/InetAddress;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress;,core-platform-api,max-target-p
Hidden whitelisted APIs: (same catch as above, however, things in this list are less likely to be broken)
  • Landroid/bluetooth/BluetoothPan;->isTetheringOn()Z,sdk,system-api,test-api
  • Landroid/bluetooth/BluetoothProfile;->PAN:I,sdk,system-api,test-api
  • (since API 30) Landroid/content/Context;->TETHERING_SERVICE:Ljava/lang/String;,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/ConnectivityManager$OnStartTetheringCallback;-><init>()V,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/ConnectivityManager$OnStartTetheringCallback;->onTetheringFailed()V,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/ConnectivityManager$OnStartTetheringCallback;->onTetheringStarted()V,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/ConnectivityManager;->startTethering(IZLandroid/net/ConnectivityManager$OnStartTetheringCallback;Landroid/os/Handler;)V,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/ConnectivityManager;->stopTethering(I)V,sdk,system-api,test-api
  • Landroid/net/LinkProperties;->getAllInterfaceNames()Ljava/util/List;,sdk,system-api,test-api
  • Landroid/net/LinkProperties;->getAllRoutes()Ljava/util/List;,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$StartTetheringCallback;->onTetheringFailed(I)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$StartTetheringCallback;->onTetheringStarted()V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onClientsChanged(Ljava/util/Collection;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onError(Ljava/lang/String;I)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onOffloadStatusChanged(I)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onTetherableInterfacesChanged(Ljava/util/List;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onTetheredInterfacesChanged(Ljava/util/List;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onTetheringSupported(Z)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringEventCallback;->onUpstreamChanged(Landroid/net/Network;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringRequest$Builder;-><init>(I)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringRequest$Builder;->build()Landroid/net/TetheringManager$TetheringRequest;,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringRequest$Builder;->setExemptFromEntitlementCheck(Z)Landroid/net/TetheringManager$TetheringRequest$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager$TetheringRequest$Builder;->setShouldShowEntitlementUi(Z)Landroid/net/TetheringManager$TetheringRequest$Builder;,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->ACTION_TETHER_STATE_CHANGED:Ljava/lang/String;,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->EXTRA_ACTIVE_LOCAL_ONLY:Ljava/lang/String;,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->EXTRA_ACTIVE_TETHER:Ljava/lang/String;,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->EXTRA_ERRORED_TETHER:Ljava/lang/String;,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->TETHERING_BLUETOOTH:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->TETHERING_ETHERNET:I,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->TETHERING_USB:I,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->TETHERING_WIFI:I,sdk,system-api,test-api
  • Landroid/net/TetheringManager;->TETHER_ERROR_*:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->TETHER_HARDWARE_OFFLOAD_FAILED:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->TETHER_HARDWARE_OFFLOAD_STARTED:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->TETHER_HARDWARE_OFFLOAD_STOPPED:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->registerTetheringEventCallback(Ljava/util/concurrent/Executor;Landroid/net/TetheringManager$TetheringEventCallback;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->startTethering(Landroid/net/TetheringManager$TetheringRequest;Ljava/util/concurrent/Executor;Landroid/net/TetheringManager$StartTetheringCallback;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->stopTethering(I)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/TetheringManager;->unregisterTetheringEventCallback(Landroid/net/TetheringManager$TetheringEventCallback;)V,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApCapability;->SOFTAP_FEATURE_BAND_24G_SUPPORTED:J,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApCapability;->SOFTAP_FEATURE_BAND_5G_SUPPORTED:J,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApCapability;->SOFTAP_FEATURE_BAND_60G_SUPPORTED:J,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApCapability;->SOFTAP_FEATURE_BAND_6G_SUPPORTED:J,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApCapability;->SOFTAP_FEATURE_*:J,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApCapability;->areFeaturesSupported(J)Z,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApCapability;->getMaxSupportedClients()I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApCapability;->getSupportedChannelList(I)[I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;-><init>()V,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;-><init>(Landroid/net/wifi/SoftApConfiguration;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->build()Landroid/net/wifi/SoftApConfiguration;,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setAllowedAcsChannels(I[I)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setAllowedClientList(Ljava/util/List;)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setAutoShutdownEnabled(Z)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (on API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setBand(I)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setBlockedClientList(Ljava/util/List;)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration$Builder;->setBridgedModeOpportunisticShutdownEnabled(Z)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setBridgedModeOpportunisticShutdownTimeoutMillis(J)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setBssid(Landroid/net/MacAddress;)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (on API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setChannel(II)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration$Builder;->setChannels(Landroid/util/SparseIntArray;)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setClientControlByUserEnabled(Z)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setHiddenSsid(Z)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration$Builder;->setIeee80211axEnabled(Z)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setIeee80211beEnabled(Z)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration$Builder;->setMacRandomizationSetting(I)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setMaxChannelBandwidth(I)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setMaxNumberOfClients(I)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setPassphrase(Ljava/lang/String;I)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration$Builder;->setShutdownTimeoutMillis(J)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30, prior to API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setSsid(Ljava/lang/String;)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setVendorElements(Ljava/util/List;)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration$Builder;->setWifiSsid(Landroid/net/wifi/WifiSsid;)Landroid/net/wifi/SoftApConfiguration$Builder;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->BAND_2GHZ:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->BAND_5GHZ:I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->BAND_60GHZ:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->BAND_6GHZ:I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->BAND_*:I,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration;->DEFAULT_TIMEOUT:J,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->RANDOMIZATION_NONE:I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->RANDOMIZATION_NON_PERSISTENT:I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->RANDOMIZATION_PERSISTENT:I,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration;->getAllowedAcsChannels(I)[I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->getAllowedClientList()Ljava/util/List;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->getBand()I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->getBlockedClientList()Ljava/util/List;,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration;->getBridgedModeOpportunisticShutdownTimeoutMillis()J,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->getChannel()I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->getChannels()Landroid/util/SparseIntArray;,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->getMacRandomizationSetting()I,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration;->getMaxChannelBandwidth()I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->getMaxNumberOfClients()I,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration;->getPersistentRandomizedMacAddress()Landroid/net/MacAddress;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->getShutdownTimeoutMillis()J,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration;->getVendorElements()Ljava/util/List;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->isAutoShutdownEnabled()Z,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->isBridgedModeOpportunisticShutdownEnabled()Z,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApConfiguration;->isClientControlByUserEnabled()Z,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->isIeee80211axEnabled()Z,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApConfiguration;->isIeee80211beEnabled()Z,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApConfiguration;->isUserConfiguration()Z,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApInfo;->CHANNEL_WIDTH_*:I,sdk,system-api,test-api
  • (since API 33) Landroid/net/wifi/SoftApInfo;->CHANNEL_WIDTH_AUTO:I,sdk,system-api,test-api
  • (on API 30) Landroid/net/wifi/SoftApInfo;->CHANNEL_WIDTH_INVALID:I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApInfo;->getAutoShutdownTimeoutMillis()J,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApInfo;->getBandwidth()I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApInfo;->getBssid()Landroid/net/MacAddress;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/SoftApInfo;->getFrequency()I,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/SoftApInfo;->getWifiStandard()I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiClient;->getMacAddress()Landroid/net/MacAddress;,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/wifi/WifiConfiguration$KeyMgmt;->WPA2_PSK:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager$SoftApCallback;->onBlockedClientConnecting(Landroid/net/wifi/WifiClient;I)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager$SoftApCallback;->onCapabilityChanged(Landroid/net/wifi/SoftApCapability;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager$SoftApCallback;->onConnectedClientsChanged(Ljava/util/List;)V,sdk,system-api,test-api
  • (on API 30) Landroid/net/wifi/WifiManager$SoftApCallback;->onInfoChanged(Landroid/net/wifi/SoftApInfo;)V,sdk,system-api,test-api
  • (since API 31) Landroid/net/wifi/WifiManager$SoftApCallback;->onInfoChanged(Ljava/util/List;)V,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager$SoftApCallback;->onStateChanged(II)V,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_FAILURE_REASON:Ljava/lang/String;,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_INTERFACE_NAME:Ljava/lang/String;,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_STATE:Ljava/lang/String;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager;->SAP_CLIENT_BLOCK_REASON_CODE_*:I,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->SAP_START_FAILURE_*:I,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->WIFI_AP_STATE_CHANGED_ACTION:Ljava/lang/String;,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->WIFI_AP_STATE_DISABLED:I,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->WIFI_AP_STATE_DISABLING:I,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->WIFI_AP_STATE_ENABLED:I,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->WIFI_AP_STATE_ENABLING:I,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->WIFI_AP_STATE_FAILED:I,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager;->getSoftApConfiguration()Landroid/net/wifi/SoftApConfiguration;,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/wifi/WifiManager;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration;,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager;->isApMacRandomizationSupported()Z,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->registerSoftApCallback(Ljava/util/concurrent/Executor;Landroid/net/wifi/WifiManager$SoftApCallback;)V,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager;->setSoftApConfiguration(Landroid/net/wifi/SoftApConfiguration;)Z,sdk,system-api,test-api
  • (prior to API 30) Landroid/net/wifi/WifiManager;->setWifiApConfiguration(Landroid/net/wifi/WifiConfiguration;)Z,sdk,system-api,test-api
  • (since API 30) Landroid/net/wifi/WifiManager;->startLocalOnlyHotspot(Landroid/net/wifi/SoftApConfiguration;Ljava/util/concurrent/Executor;Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;)V,sdk,system-api,test-api
  • Landroid/net/wifi/WifiManager;->unregisterSoftApCallback(Landroid/net/wifi/WifiManager$SoftApCallback;)V,sdk,system-api,test-api
  • Landroid/net/wifi/p2p/WifiP2pGroupList;->getGroupList()Ljava/util/List;,sdk,system-api,test-api
  • Landroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;->onPersistentGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroupList;)V,sdk,system-api,test-api
  • Landroid/net/wifi/p2p/WifiP2pManager;->deletePersistentGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;ILandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V,sdk,system-api,test-api
  • Landroid/net/wifi/p2p/WifiP2pManager;->requestPersistentGroupInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;)V,sdk,system-api,test-api
  • Landroid/net/wifi/p2p/WifiP2pManager;->setWifiP2pChannels(Landroid/net/wifi/p2p/WifiP2pManager$Channel;IILandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V,sdk,system-api,test-api
  • (on API 30) Landroid/os/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z,sdk,system-api,test-api
  • (since API 29, prior to API 31) Landroid/os/SystemProperties;->getLong(Ljava/lang/String;J)J,sdk,system-api,test-api
  • Landroid/provider/Settings$Global;->TETHER_OFFLOAD_DISABLED:Ljava/lang/String;,sdk,system-api,test-api

Nonexported system resources:

  • (since API 30) @com.android.networkstack.tethering:array/config_tether_bluetooth_regexs
  • (since API 30) @com.android.networkstack.tethering:array/config_tether_ncm_regexs
  • (since API 30) @com.android.networkstack.tethering:array/config_tether_usb_regexs
  • (since API 30) @com.android.networkstack.tethering:array/config_tether_wifi_p2p_regexs
  • (since API 30) @com.android.networkstack.tethering:array/config_tether_wifi_regexs
  • (since API 30) @com.android.networkstack.tethering:array/config_tether_wigig_regexs
  • (since API 30) @com.android.wifi.resources:bool/config_wifi_p2p_mac_randomization_supported
  • (since API 31) @com.android.wifi.resources:integer/config_wifiFrameworkSoftApShutDownIdleInstanceInBridgedModeTimeoutMillisecond
  • (since API 30) @com.android.wifi.resources:integer/config_wifiFrameworkSoftApShutDownTimeoutMilliseconds

Other:

  • Activity com.android.settings/.Settings$TetherSettingsActivity is assumed to be exported.
  • (since API 29) Requires /apex/com.android.tethering/javalib/service-connectivity.jar with its native dependencies located in /apex/com.android.tethering/lib[64].
  • (since API 30) Relevant classes in the tethering APEX have these optional prefixes: android.net.connectivity or com.android.connectivity.
  • (since API 33) mUidOwnerMap is located at /sys/fs/bpf/netd_shared/map_netd_uid_owner_map.

For ip rule priorities, RULE_PRIORITY_SECURE_VPN and RULE_PRIORITY_TETHERING is assumed to be 12000 (or higher) and 18000 respectively; DHCP server like dnsmasq is assumed to run and send DHCP packets as root.

Undocumented system binaries are all bundled and executable:

  • iptables-save, ip6tables-save;
  • echo;
  • /system/bin/ip (address link monitor neigh rule unreachable);
  • ndc (ipfwd nat network);
  • iptables, ip6tables (with correct version corresponding to API level, -nvx -L <chain>);
  • sh;
  • su.

Wi-Fi driver wpa_supplicant:

vpnhotspot's People

Contributors

bluehomewu avatar dwuku avatar ferhadnecef avatar kaitul avatar mygod avatar xicciodj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vpnhotspot's Issues

Feature Req: Auto-Tether On VPN Connect

Hello,

Sorry if wrong place but would love to request an option to automatically enable WiFi tether on VPN connect. My VPN connection sometimes drops and then the hotspot leaks.

Option to start the app on boot would also be great!

It's not an issue. I just have a few questions

It would be great to write a small help notes for application, but I'm not insisting.

Questions:
What does the repeater function do?
What does the switch with "wlan0" above "Manage system tethering" do?

Support for user-defined/custom interface (WireGuard)

Do you think this would be possible? As far as I understood the code, you forward traffic via iptables, so simply using the interface defined by WireGuard should do the trick. Currently, the official Android app creates an interface based on the profile file name you supply. Thanks!

Something went wrong, please check logcat

Hi, it's not working on my moto x4 with oreo, here is the logcat :

--------- beginning of main
02-10 01:14:57.468 10370 10370 D android.widget.GridLayout: horizontal constraints: x3-x0>=984, x3-x2<=289, x2-x1<=24, x1-x0<=310 are inconsistent; permanently removing: x3-x2<=289. 
02-10 01:15:07.964 10370 10370 W Notification: Use of stream types is deprecated for operations other than volume control
02-10 01:15:07.964 10370 10370 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
02-10 01:15:07.972 10370 10370 W Notification: Use of stream types is deprecated for operations other than volume control
02-10 01:15:07.972 10370 10370 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
02-10 01:15:08.191 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:08.191 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:08.191 10370 10491 I NoisySU : iptables -w 1 -t nat -A PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:08.191 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:08.191 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:08.191 10370 10491 I NoisySU : iptables -w 1 -t nat -A PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:08.333 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:08.333 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:08.333 10370 10491 I NoisySU : iptables -w 1 -t nat -D PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:08.333 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:08.333 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:08.333 10370 10491 I NoisySU : iptables -w 1 -t nat -D PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:08.337 10370 10491 W Notification: Use of stream types is deprecated for operations other than volume control
02-10 01:15:08.337 10370 10491 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
02-10 01:15:23.667 10370 10370 I NoisySU : iptables: No chain/target/match by that name.
02-10 01:15:23.667 10370 10370 I NoisySU : RTNETLINK answers: No such file or directory
02-10 01:15:32.796 10370 10370 D android.widget.GridLayout: horizontal constraints: x3-x0>=984, x3-x2<=289, x2-x1<=24, x1-x0<=310 are inconsistent; permanently removing: x3-x2<=289. 
02-10 01:15:35.362 10370 10370 W Notification: Use of stream types is deprecated for operations other than volume control
02-10 01:15:35.362 10370 10370 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
02-10 01:15:35.365 10370 10370 W Notification: Use of stream types is deprecated for operations other than volume control
02-10 01:15:35.365 10370 10370 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
02-10 01:15:35.528 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:35.528 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:35.528 10370 10491 I NoisySU : iptables -w 1 -t nat -A PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:35.528 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:35.528 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:35.528 10370 10491 I NoisySU : iptables -w 1 -t nat -A PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:35.656 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:35.656 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:35.656 10370 10491 I NoisySU : iptables -w 1 -t nat -D PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:35.656 10370 10491 I NoisySU : iptables v1.6.1: option "--to-destination" requires an argument
02-10 01:15:35.656 10370 10491 I NoisySU : Try `iptables -h' or 'iptables --help' for more information.
02-10 01:15:35.656 10370 10491 I NoisySU : iptables -w 1 -t nat -D PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination exited with 2
02-10 01:15:35.662 10370 10491 W Notification: Use of stream types is deprecated for operations other than volume control
02-10 01:15:35.662 10370 10491 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
02-10 01:15:41.353 10370 10375 I zygote64: Do full code cache collection, code=244KB, data=175KB
02-10 01:15:41.354 10370 10375 I zygote64: After code cache collection, code=243KB, data=140KB

Thank you for your help and for your good work !

Feature: per-client data usage and access control

Apparently some asshole wants this feature and wants to get paid by doing nothing but whining about this feature being missing. Fortunately for him this is possible but I'm not going to implement it because I don't need it. However pull requests are definitely cool and welcome.

To implement this feature, instead of allowing all traffic through in Routing.forward, we will add a -j ACCEPT rule for each new client for its IP address using -s/-d taking advantage of IpNeighborMonitor. Then data usage for each client can be obtained using iptables -nvx -L vpnhotspot_fwd. To parse the output of this command, we might be able to take advantage of some code in netd in AOSP. Access control is easy, just not add ACCEPT rule and add DROP rule for system tethering. (I have already played around in the root shell to make sure this works)

After collection, ideally we want to store data usage by client's MAC address and date-time so that we can have some nice charts. We also need to poll that command to update UI for clients usage (including rate).

Of course I could implement this feature if somebody wants to pay me to do it. 😄

Related: https://android.googlesource.com/platform/frameworks/base.git/+/master/core/java/android/net/NetworkStatsHistory.java

Unable to access local network from phone

ZTE Axon 7 (A2017U)
AOSP Extended (AEX) 5.7 Official (Android 8.1.0)
Magisk 17.1
BusyBox 1.29.2
Xposed Framework 90.2 beta 3 (but no modules installed)

I cant seem to be able to get my phone to access my local network. I have a HTTP server running on my laptop that I'm trying to test the mobile site on but my phone won't connect to it. My computers have no problem talking to each other, but the phone does not connect to anything on the local network. The phone also does not recognize any of my samba configured devices (windows file sharing). The computer I am trying to connect to is 192.168.43.19.

When I use my native hotspot it works just fine.

These are my settings

Upstream Network Interface = Auto detect system VPN
IP Masquerade = On
Strict Mode = On ( I also tried Off, it was last thing I tried)
Disable IPv6 tethering = On
Fallback DNS server[:port] = 8.8.8.8
Enable DHCP workaround = Off

Log file
https://www.dropbox.com/s/tdv169908pzoydr/vpnhotspot-7455102392017889218.log?dl=0

Every time I start, pops up "something wrong ..."

Here is debug info

12 is running on API 27

--------- beginning of main
03-21 23:40:40.853  6249  6272 D OpenGLRenderer: HWUI GL Pipeline
03-21 23:40:40.872  6249  6259 I zygote  : Background concurrent copying GC freed 3572(1016KB) AllocSpace objects, 1(20KB) LOS objects, 50% free, 1890KB/3MB, paused 686us total 105.844ms
03-21 23:40:40.888  6249  6265 W IpNeighbour: open("/proc/self/ns/net"): Permission denied
03-21 23:40:40.893  6249  6249 D android.widget.GridLayout: horizontal constraints: x3-x0>=1327, x3-x2<=329, x2-x1<=28, x1-x0<=354 are inconsistent; permanently removing: x3-x2<=329. 
03-21 23:40:40.908  6249  6272 I Adreno  : QUALCOMM build                   : a5b4970, If5818605d9
03-21 23:40:40.908  6249  6272 I Adreno  : Build Date                       : 10/12/16
03-21 23:40:40.908  6249  6272 I Adreno  : OpenGL ES Shader Compiler Version: XE031.09.00.04
03-21 23:40:40.908  6249  6272 I Adreno  : Local Branch                     : N24D
03-21 23:40:40.908  6249  6272 I Adreno  : Remote Branch                    : 
03-21 23:40:40.908  6249  6272 I Adreno  : Remote Branch                    : 
03-21 23:40:40.908  6249  6272 I Adreno  : Reconstruct Branch               : 
03-21 23:40:40.919  6249  6272 I zygote  : android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
03-21 23:40:40.921  6249  6272 I OpenGLRenderer: Initialized EGL, version 1.4
03-21 23:40:40.921  6249  6272 D OpenGLRenderer: Swap behavior 2
03-21 23:40:40.944  6249  6272 D vndksupport: Loading /vendor/lib/hw/[email protected] from current namespace instead of sphal namespace.
03-21 23:40:40.946  6249  6272 D vndksupport: Loading /vendor/lib/hw/gralloc.msm8084.so from current namespace instead of sphal namespace.
03-21 23:40:40.999  6249  6265 W IpNeighbour: request send failed: Invalid argument
03-21 23:40:41.921  6249  6271 W zygote  : Long monitor contention with owner IpNeighbourMonitor-input (6265) at int libcore.io.Linux.readBytes(java.io.FileDescriptor, java.lang.Object, int, int)(Linux.java:-2) waiters=0 in void java.lang.UNIXProcess$ProcessPipeInputStream.processExited() for 917ms
03-21 23:40:51.879  6316  6316 W ip      : type=1400 audit(0.0:658): avc: denied { read } for dev="proc" ino=4026544206 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0
03-21 23:40:51.880  6249  6304 W IpNeighbour: open("/proc/self/ns/net"): Permission denied
03-21 23:40:51.999  6249  6304 W IpNeighbour: request send failed: Invalid argument
03-21 23:40:52.833  6249  6271 W zygote  : Long monitor contention with owner IpNeighbourMonitor-input (6304) at int libcore.io.Linux.readBytes(java.io.FileDescriptor, java.lang.Object, int, int)(Linux.java:-2) waiters=0 in void java.lang.UNIXProcess$ProcessPipeInputStream.processExited() for 831ms
03-21 23:40:52.841  6249  6311 W zygote  : Long monitor contention with owner ConnectivityThread (6307) at int libcore.io.Linux.readBytes(java.io.FileDescriptor, java.lang.Object, int, int)(Linux.java:-2) waiters=0 in void java.lang.UNIXProcess$ProcessPipeInputStream.processExited() for 734ms
03-21 23:41:07.301  6249  6249 I Choreographer: Skipped 66 frames!  The application may be doing too much work on its main thread.
03-21 23:41:38.776  6249  6254 I zygote  : Do partial code cache collection, code=31KB, data=29KB
03-21 23:41:38.779  6249  6254 I zygote  : After code cache collection, code=30KB, data=29KB
03-21 23:41:38.779  6249  6254 I zygote  : Increasing code cache capacity to 128KB
03-21 23:41:52.686  6249  6249 D android.widget.GridLayout: horizontal constraints: x3-x0>=1327, x3-x2<=329, x2-x1<=28, x1-x0<=354 are inconsistent; permanently removing: x3-x2<=329. 
03-21 23:41:55.728  6249  6254 I zygote  : Do partial code cache collection, code=61KB, data=61KB
03-21 23:41:55.729  6249  6254 I zygote  : After code cache collection, code=61KB, data=61KB
03-21 23:41:55.729  6249  6254 I zygote  : Increasing code cache capacity to 256KB
03-21 23:44:33.153  6249  7102 W zygote  : Long monitor contention with owner main (6249) at int libcore.io.Linux.readBytes(java.io.FileDescriptor, java.lang.Object, int, int)(Linux.java:-2) waiters=0 in void java.lang.UNIXProcess$ProcessPipeInputStream.processExited() for 646ms
03-21 23:44:33.178  6249  6249 I Choreographer: Skipped 81 frames!  The application may be doing too much work on its main thread.
03-21 23:46:22.740  6249  6249 I zygote  : Deoptimizing void android.support.v7.widget.LinearLayoutManager.layoutChunk(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, android.support.v7.widget.LinearLayoutManager$LayoutState, android.support.v7.widget.LinearLayoutManager$LayoutChunkResult) due to JIT inline cache

Share Shadowsocks works will, but can't share OpenVPN

Environment

What did you do?

Connect OpenVPN, open VPNHotspot and toggle the switch in "Repeater" on.

What did you expect to see?

My device which installed OpenVPN can access Internet through VPN, and other devices can connect to the Hotspot to access Internet through VPN.

What did you see instead?

My device which installed OpenVPN can access Internet through VPN, other devices can connect to the Hotspot, but no Internet is available.
Same issue is exist in "Tethering"(System built).

VPN tether not working and local traffic breaks connection

If I use Wifi Hotspot and then enable the button up top for vpn tethering on that connection, it does nothing. I will still show my ISP ip address. Sometimes it will also just break the internet connection altogether. If I use Temporary Hotspot, it works perfect, I haven't had a problem with it except randomly it will shut down after being up for about 5 minutes, but it doesn't do that all the time. This is very annoying because the bssid and password is randomized everytime.

Also, when I am using the vpn tether enabled option, any local hotspot traffic (192.168.43.190 to 192.168.43.19) after about 1-2 minutes the local and internet connections stop working, even though the hotspot is still up. I have tested this multiple times and is certainly not a problem on my end.

I'm using the latest built from source 2 days ago, it reports as 1.3.5 (no files were edited). I'm on a ZTE Axon 7 (a2017u) with AOSP Extended 5.7 with Magisk.

What changes exactly can this app do to my system? (and how to revert them)

Question: What changes does this app make to the system which have any potential to stay permanently?

Reason for question: Pretty sure this app is the reason tethering doesn't work anymore on my phone (seems like DHCP is broken). Don't really want to do a full reset.
If you are interested, there are lots of

02-28 11:07:20.780 15842 15842 I dnsmasq : DHCPDISCOVER(rndis0) ce:2e:aa:44:45:46 
02-28 11:07:20.781 15842 15842 I dnsmasq : DHCPOFFER(rndis0) 192.168.42.83 ce:2e:aa:44:45:46

in logcat, but the client (which really is ce:2e:aa:44:45:46, I checked) never actually gets that IP.

Repeater not working

Using VPNHotspot as System app on Oero 8.0, Actually i use my wifi for storage purpose and recently find out that repeater doesn't work for wifi connections with no Internet Connection, i can't even reach to my router settings (192.168.1.1) from my 2nd Device,
Please look into it
here is my logs,
vpnhotspot-8475376107761821038.log

IPv6 tethering

Currently AOSP only has support for IPv6 tethering when using mobile networks under supported carriers since Android 7.0.

It's unclear how to do this for IPv6-capable VPN or even Wi-Fi. The main issue is configuring a valid IPv6 address for clients. This is further complicated by the fact that sometimes dnsmasq (actually I'm not 100% sure yet) will configure another valid IPv6 address using Router Advertisement.

Update: It might be possible to create a bridge. [1, 2]

Only Temporary Hotspot Works

ZTE Axon 7 (A2017U)
AOSP Extended (AEX) 5.7 Official (Android 8.1.0)
Magisk 17.1
BusyBox 1.29.2
Xposed Framework 90.2 beta 3 (but no modules installed)

screenshot_settings_20180911-225856

The hotspot does not route through my VPN. When I use Temporary Hotspot, it does. I have whiped and installed a fresh Android and it still will not work.

These are my settings

Upstream Network Interface = Auto detect system VPN
IP Masquerade = On
Strict Mode = On
Disable IPv6 tethering = On
Fallback DNS server[:port] = 8.8.8.8
Enable DHCP workaround = Off

These settings will work with Temporary Hotspot.

When I use my regular hotspot and toggle VPN switch above "+ Manage System Tethering..." on first tab, it disables IPv6, but does not route through VPN and only allows the connected device to go to Youtube.com and Google.com. Google shows my IPv4 address from my ISP, not the VPN. My ISP address on Google will be a IPv6 address normally, so the Disable IPv6 Tethering is working.

The logs attached below are from after I did the following.

  1. Force closed app
  2. Deleted app data and cache
  3. Opened app and changed settings to ones above
  4. Started Temporary Hotspot and connected a device
  5. Turned off Temporary Hotspot

The rest I did 3 times

  1. Turned on Wifi Hotspot
  2. Enable VPN Tethering on toggle switch above "+ Manage System Tethering..." on first tab
  3. Tried the internet and got my IPv4 ISP address and only could go to Youtube.com and Google.com.

https://www.dropbox.com/s/mjsk61zd0lll93m/vpnhotspot-6416338702922597112.log?dl=0

In App USB/Bluetooth Hotspot Toggles Not working

In App USB/Bluetooth Hotspot Toggles Not working
Getting error Neither user nor current process has permission....(check ss) while usb tethering and Android system has failed to start Tethering for Bluetooth tethering though WiFi #tethering working fine. Using Android 8.0 Mi A1 Device.
screenshot_20180424-182041
screenshot_20180424-182035

Hi, there, missing databinding folder when I open it at Android Studio

  1. I must say, you are so amazing to create such an app that certainly useful

  2. I want to learn the inner logic and design patterns from you, so I cloned this project, and opened it at Android Studio

  3. But I got something wrong with import be.mygod.vpnhotspot.databinding.ActivityMainBinding, it says Unresolved reference: databinding. And yes, indeed there no such a folder.

Can you point out where I'm wrong? Thanks a lot.

Is the work principal of Temporary WIFI hotspot the same as a system WIFI hotspot(in VPN Hotspot app)

When i create the pre-configured system WIFI hotspot in VPN Hotspot,it will show a interface that “Modify the prompt”(like this picture, answer your last question,turning on system hotspots via system's UI dosent show this interface,maybe the system has allowed this in default).I allowed this and choosed the wlan0,the connected computer showed internet available but it cant load anything. While i create the Temporary hotspot,it won't show anything and work well.So i think they maybe worked via different ways.

my device is xiaomi 8,rom is miui10 based android pie,maybe the reason will exist in some particular device.If it is very trouble to solve it,can you add a new option that users can set custom hotspot password.

Finally, thanks the author for your hard work and making such a good work.

Root problem on Flyme (based on Android)

(Flyme系统6.3.0.2版本,使用系统提供的root,已root,shadowsocks的NAT模式可用)
开启时提示:“似乎并没有root” ,调试信息粘贴如下:

25 is running on API 22

--------- beginning of main
E/System  ( 5675): stat file error, path is /data/app/be.mygod.vpnhotspot-1/lib/arm64, exception is android.system.ErrnoException: stat failed: ENOENT (No such file or directory)
W/linker  ( 5675): /system/lib64/libfilterUtils.so: unused DT entry: type 0x6ffffffe arg 0x808
W/linker  ( 5675): /system/lib64/libfilterUtils.so: unused DT entry: type 0x6fffffff arg 0x2
I/CrashlyticsCore( 5675): Initializing Crashlytics 2.6.3.25
I/CrashlyticsInitProvider( 5675): CrashlyticsInitProvider initialization successful
D/libc-netbsd( 5675): [getaddrinfo]: hostname=settings.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd( 5675): [getaddrinfo]: hostname=settings.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
E/GED     ( 5675): Failed to get GED Log Buf, err(0)
D/libc-netbsd( 5675): getaddrinfo: settings.crashlytics.com get result from proxy >>
D/libc-netbsd( 5675): [getaddrinfo]: hostname=settings.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
E/NativeCrypto( 5675): ssl=0x7f6f910980 cert_verify_callback x509_store_ctx=0x7f6fdbd928 arg=0x0
E/NativeCrypto( 5675): ssl=0x7f6f910980 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
W/CrashlyticsCore( 5675): Firebase Analytics is not present; you will not see automatic logging of events before a crash occurs.
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
D/libc-netbsd( 5675): getaddrinfo: e.crashlytics.com get result from proxy >>
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
E/NativeCrypto( 5675): ssl=0x7f6f913a80 cert_verify_callback x509_store_ctx=0x7f69a1a9e8 arg=0x0
E/NativeCrypto( 5675): ssl=0x7f6f913a80 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
E/NoisySU ( 5675): su: invalid option -- c
E/NoisySU ( 5675): su: invalid option -- c
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
D/libc-netbsd( 5675): getaddrinfo: e.crashlytics.com get result from proxy >>
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
E/NoisySU ( 5675): su: invalid option -- c
E/NoisySU ( 5675): su: invalid option -- c
E/NoisySU ( 5675): su: invalid option -- c
I/NoisySU ( 5675): enter main
I/NoisySU ( 5675): 
E/NoisySU ( 5675): su: invalid option -- c
W/InputEventReceiver( 5675): Attempted to finish an input event but the input event receiver has already been disposed.
E/NoisySU ( 5675): su: invalid option -- c
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
D/libc-netbsd( 5675): getaddrinfo: e.crashlytics.com get result from proxy >>
D/libc-netbsd( 5675): [getaddrinfo]: hostname=e.crashlytics.com; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd( 5675): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
E/NativeCrypto( 5675): ssl=0x7f6f913a80 cert_verify_callback x509_store_ctx=0x7f69a1a9e8 arg=0x0
E/NativeCrypto( 5675): ssl=0x7f6f913a80 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
I/NoisySU ( 5675): enter main
I/NoisySU ( 5675): 
E/NoisySU ( 5675): su: invalid option -- c
E/NoisySU ( 5675): su: invalid option -- c

enter main

Can't enable root

How to reproduce
Instal VPN Hotspot
Open VPN Hotspot
Click root
But not working
Browser: VPN Hotspot App version 1.3.0
Operating system: Android 6.0

Ad filtering suggestions

Could the app include a hosts that can be updated daily to block adds on all devices connected to vpnhotspots network? In a future release.

Avoid Random Channel changes?

The free WiFi i use is randomly changing its WiFi channel after 20/30 min. When this happens my repeater gets unstable with low download. Any chance to avoid it?

Enable/disable USB tethering not working from within the app sometimes

Device: Redmi Note 4
OS: Lineage OS 15.1
Rooted with LOS su
vpnhotspot-7953976211293013073.log

When I launch the app and enable USB tethering, it gives a toast saying Neither user 15013 nor current process has android.permission.MANAGE_USB. It then opens the hotspot settings menu. After I enable tethering manually and try to turn it off from the app, it gives the same toast and opens the hotspot settings, but now the USB tethering is turned off.
Here's the weird part:
Now if I return back to the app and enable USB tethering, it turns it on correctly. If I try turning it off, it displays the same toast and opens the hotspot settings but USB tethering has been turned off

Android 9 pie compatibility ?

Hi there

I'm on android pie now,
If I route the connection through the pre-configured system hotspot into the VPN Hotspot app it does not load anything in the computer connected, but dns works fine. weird ?

but when I create a temporary hotspot directly in the app the connection works and everything load from the connected computer.

when I was on android 8.1 I'm pretty sure it all worked just fine, but I really don't know what is the issue causing this !

Set a fixed login/password combination on the "temporary" hotspot

Additionally to the Repeater-function that helps to provide VPN through another Wifi, the Tethering dialogue in VPN Hotspot allows to provide VPN through Mobile connection to toher devices. But why is there no corresponding option to set login/password on the "Temporary Wi-Fi hotspot"? That would be a great deal to repeatedly share the mobile connection to other devices with the proper VPN connection in place.

There might be a specific reason why that is or I might have overlooked how to do that in the UI, but if that would be possible to integrate, it would make another great feature. Especially in "regulated" countries e.g. China, to help out others connecting to the world.

Round launcher icon broken in APK build

Just wondering if there's a specific reason to include a 1x1px ic_launcher_round.png? That's e.g. why you don't see any icon assigned to the app in my repo, as fdroidserver in case of XML icons uses this first, and the other one only if this was not found. As it is found, it is used despite of being empty. I'd expect users of "round icons" might have a similar surprise in their launchers.

To be more precise: If you unzip the .apk and look inside the res/mipmap-*dpi-v4 directories, you will notice that in each of them the ic_launcher_round.png file has a size of only 67 bytes: a single pixel (1x1) plus the PNG header, nothing more.

With the icons being fine in the repo itself (e.g. https://github.com/Mygod/VPNHotspot/blob/1.0.0/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png shows a size of 12.4k with the PNG displaying fine as 192x192px), this must be a build-issue.

failed installing latest version from F-droid

Message:

Error installing VPN Hotspot
Parsing apk file failed!Maybe minSdk of apk is lower than current Sdk?Look into logcat for more specific warning of Android's PackageParser

F-droid version: 1.5-alpha2
Android version: 9.0
old VPNHotspot version: 2.0.4
new VPNHotspot version: 2.0.7

right after connecting- "check failed"

right after connecting- "check failed" couple times, and then disabling hotspot
android 8.0 (emui)
huawei p20 lite
root magisk
vpn shadowsocks
thank you! 🙏

Support for Android 4.1(API 16)?

I have an old tablet running Android 4.1 which I want to share its mobile data with VPN to other devices. But when I'm trying to install the app it says error parsing package. Is it a bug or is that the app does not support older Android versions? If it's the latter issue, can you add support for older Android systems? My tablet has no adequate ROMs for newer Android versions.

Tasker integration

@sea3pea0: #9 (comment)

How about the ability to control this app via intents so that we could use tasker to initiate actions in this app? I have an android head unit in my car that is connected to an android phone acting as a hotspot and running this app.

The only way I've found to reliably avoid having my hotspot being throttled by t-mobile is to share the hotspot through a vpn connection.

Right now, when my car is turned on or the android phone boots up, tasker turns my hotspot on and when the car turns off the hotspot is turned off by tasker. With tasker I sense whether the car is on or off by the charging cable for the phone. If its charging, the car is on and if not its off.

It would be great if I could also have an action to turn vpn hotspot on for my wlan as one of the actions. This way the process would be automated.

As of now, if the hotspot is turned off and then back on, I have to go manually into the vpn hotspot app and re-toggle the wlan switch to route the hotspot traffic back through the vpn.

Thanks in adavnce for your help and/or consideration for this feature request. Obviously if it was possible for this app to remember the last setting and just ensure that either after boot or if the hotspot is turned off and back on that traffic would be routed through the vpn, this would work for me too. If its easier to make this possible through the use of tasker automations perhaps this would help others too.

And maybe MacroDroid as well?

Wish to connect to 801.2 usb router

Anyway i really like this app i have pda net but it wont stay hooked up anylonger i have android 5.0 on phone and nexus notebook .so iam just punching bunch of buttons .iam 40 year refrigeration tech .now that i know .any tips is helpful. Thank you !

No puedo instalar?

screenshot_2018-12-24-06-53-51

Si exporto el APK desde otro teléfono si puedo, pero desde Fdroid en mi teléfono no me deja

bug? or not. dnsmasq cost too much cpu resource after starting VPN hotspot

Same as the title, the question.
When I using this app to share my VPN stream to clients which connected by wifi, the phone is very hot immediate, and I found that the system process '/system/bin/dnsmasq' cause to high cpu usage.
On the other hand, this problem do not re-cause on the other app(TetherNet)
hope to be solved!

mac 下的as提示模块找不到iml文件,remove后正常编译但是无法开启

01-19 03:49:09.176 5455-5455/? I/art: Late-enabling -Xcheck:jni
01-19 03:49:09.258 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_dependencies_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.501 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_0_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.538 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_1_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.571 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_2_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.601 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_3_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.648 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_4_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.683 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_5_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.716 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_6_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.748 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_7_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.785 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_8_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.821 5455-5455/be.mygod.vpnhotspot W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m -j2 --instruction-set-variant=cortex-a53 --instruction-set-features=default --dex-file=/data/app/be.mygod.vpnhotspot-1/split_lib_slice_9_apk.apk --oat-file=/data/dalvik-cache/arm64/data@[email protected]@[email protected]) because non-0 exit status
01-19 03:49:09.822 5455-5455/be.mygod.vpnhotspot W/System: ClassLoader referenced unknown path: /data/app/be.mygod.vpnhotspot-1/lib/arm64
01-19 03:49:09.837 5455-5455/be.mygod.vpnhotspot I/InstantRun: starting instant run server: is main process
01-19 03:49:09.894 5455-5455/be.mygod.vpnhotspot W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
01-19 03:49:10.142 5455-5455/be.mygod.vpnhotspot W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
01-19 03:49:10.150 5455-5495/be.mygod.vpnhotspot D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
01-19 03:49:10.180 5455-5455/be.mygod.vpnhotspot D/android.widget.GridLayout: horizontal constraints: x3-x0>=1328, x3-x2<=147, x2-x1<=28, x1-x0<=224 are inconsistent; permanently removing: x3-x2<=147. 
01-19 03:49:10.199 5455-5495/be.mygod.vpnhotspot I/Adreno: QUALCOMM build                   : 63c06b2, I8366cd0437
                                                           Build Date                       : 12/06/15
                                                           OpenGL ES Shader Compiler Version: XE031.05.13.02
                                                           Local Branch                     : mybranch17112971
                                                           Remote Branch                    : quic/LA.BF64.1.2.9_v2
                                                           Remote Branch                    : NONE
                                                           Reconstruct Branch               : NOTHING
01-19 03:49:10.205 5455-5495/be.mygod.vpnhotspot I/OpenGLRenderer: Initialized EGL, version 1.4
01-19 03:49:12.488 5455-5504/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:49:13.872 5455-5524/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:49:14.839 5455-5468/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {4471292} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {4471292} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.hide(Toast.java:388)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:49:16.844 5455-5467/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {5808033} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {5808033} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.show(Toast.java:379)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:49)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:49:17.856 5455-5555/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:49:18.248 5455-5555/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -I FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
01-19 03:49:18.587 5455-5555/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
01-19 03:49:18.846 5455-5468/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {5808033} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {5808033} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.hide(Toast.java:388)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:49:20.969 5455-5495/be.mygod.vpnhotspot V/RenderScript: 0x7f5ece6000 Launching thread(s), CPUs 8
01-19 03:49:22.343 5455-5455/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -I FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
01-19 03:49:22.694 5455-5455/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
01-19 03:49:22.698 5455-5455/be.mygod.vpnhotspot I/Choreographer: Skipped 44 frames!  The application may be doing too much work on its main thread.
01-19 03:49:23.152 5455-5455/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -I FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
01-19 03:49:23.494 5455-5455/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
01-19 03:49:23.498 5455-5455/be.mygod.vpnhotspot I/Choreographer: Skipped 41 frames!  The application may be doing too much work on its main thread.
01-19 03:49:24.655 5455-5455/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -A vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -I FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -A PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
01-19 03:49:25.007 5455-5455/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p udp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -D PREROUTING -i wlan0 -p tcp -d 192.168.43.1 --dport 53 -j DNAT --to-destination 8.8.8.8:53 exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D FORWARD -j vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i wlan0 -o tun0 -j ACCEPT exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -D vpnhotspot_fwd -i tun0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT exited with 2
01-19 03:49:25.012 5455-5455/be.mygod.vpnhotspot I/Choreographer: Skipped 43 frames!  The application may be doing too much work on its main thread.
01-19 03:49:31.134 5455-5455/be.mygod.vpnhotspot I/NoisySU: Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -t nat -F PREROUTING exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -F vpnhotspot_fwd exited with 2
                                                            Bad argument `1'
                                                            Try `iptables -h' or 'iptables --help' for more information.
                                                            iptables -w 1 -X vpnhotspot_fwd exited with 2
                                                            RTNETLINK answers: No such file or directory
01-19 03:49:36.212 5455-5495/be.mygod.vpnhotspot D/OpenGLRenderer: endAllStagingAnimators on 0x7f5f275800 (RippleDrawable) with handle 0x7f5d6ea820
01-19 03:49:49.120 5455-5495/be.mygod.vpnhotspot D/OpenGLRenderer: endAllStagingAnimators on 0x7f5f275c00 (RippleDrawable) with handle 0x7f71492b00
01-19 03:49:54.530 5455-5455/be.mygod.vpnhotspot D/android.widget.GridLayout: horizontal constraints: x3-x0>=1328, x3-x2<=147, x2-x1<=28, x1-x0<=224 are inconsistent; permanently removing: x3-x2<=147. 
01-19 03:49:57.173 5455-6025/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:49:59.528 5455-5467/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {370956e} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {370956e} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.hide(Toast.java:388)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:49:59.903 5455-5455/be.mygod.vpnhotspot I/ListPopupWindow: Could not find method setEpicenterBounds(Rect) on PopupWindow. Oh well.
01-19 03:50:01.521 5455-5495/be.mygod.vpnhotspot D/OpenGLRenderer: endAllStagingAnimators on 0x7f5ecc8400 (MenuPopupWindow$MenuDropDownListView) with handle 0x7f5f17cc20
01-19 03:50:03.775 5455-5495/be.mygod.vpnhotspot D/OpenGLRenderer: endAllStagingAnimators on 0x7f5ce03800 (MenuPopupWindow$MenuDropDownListView) with handle 0x7f5f17c680
01-19 03:50:10.699 5455-5455/be.mygod.vpnhotspot D/android.widget.GridLayout: horizontal constraints: x3-x0>=1328, x3-x2<=147, x2-x1<=28, x1-x0<=224 are inconsistent; permanently removing: x3-x2<=147. 
01-19 03:50:12.818 5455-6087/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:50:14.236 5455-6113/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:50:15.143 5455-5468/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {5033711} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {5033711} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.hide(Toast.java:388)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:50:15.144 5455-5468/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {54bd076} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {54bd076} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.show(Toast.java:379)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:49)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:50:17.148 5455-5467/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {54bd076} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {54bd076} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.hide(Toast.java:388)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:50:22.773 5455-5455/be.mygod.vpnhotspot D/android.widget.GridLayout: horizontal constraints: x3-x0>=1328, x3-x2<=147, x2-x1<=28, x1-x0<=224 are inconsistent; permanently removing: x3-x2<=147. 
01-19 03:50:24.878 5455-5455/be.mygod.vpnhotspot D/android.widget.GridLayout: horizontal constraints: x3-x0>=1328, x3-x2<=147, x2-x1<=28, x1-x0<=224 are inconsistent; permanently removing: x3-x2<=147. 
01-19 03:50:29.025 5455-5495/be.mygod.vpnhotspot D/OpenGLRenderer: endAllStagingAnimators on 0x7f5db31000 (RippleDrawable) with handle 0x7f710fc1a0
01-19 03:52:08.068 5455-5455/be.mygod.vpnhotspot D/android.widget.GridLayout: horizontal constraints: x3-x0>=1328, x3-x2<=147, x2-x1<=28, x1-x0<=224 are inconsistent; permanently removing: x3-x2<=147. 
01-19 03:52:11.149 5455-5455/be.mygod.vpnhotspot D/android.widget.GridLayout: horizontal constraints: x3-x0>=1328, x3-x2<=147, x2-x1<=28, x1-x0<=224 are inconsistent; permanently removing: x3-x2<=147. 
01-19 03:52:12.788 5455-6799/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:52:14.326 5455-6819/be.mygod.vpnhotspot D/VpnListener: onAvailable: tun0
01-19 03:52:15.149 5455-5557/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {52f3d1} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {52f3d1} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.hide(Toast.java:388)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:52:17.155 5455-5468/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {7c1fc0d} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {7c1fc0d} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.show(Toast.java:379)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:49)
                                                                     at android.os.Binder.execTransact(Binder.java:453)
01-19 03:52:19.162 5455-5468/be.mygod.vpnhotspot W/MessageQueue: Handler (android.os.Handler) {7c1fc0d} sending message to a Handler on a dead thread
                                                                 java.lang.IllegalStateException: Handler (android.os.Handler) {7c1fc0d} sending message to a Handler on a dead thread
                                                                     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
                                                                     at android.os.Handler.enqueueMessage(Handler.java:631)
                                                                     at android.os.Handler.sendMessageAtTime(Handler.java:600)
                                                                     at android.os.Handler.sendMessageDelayed(Handler.java:570)
                                                                     at android.os.Handler.post(Handler.java:326)
                                                                     at android.widget.Toast$TN.hide(Toast.java:388)
                                                                     at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
                                                                     at android.os.Binder.execTransact(Binder.java:453)

大概就是一直提示art的错误,进入了通知的class,也没有调出个所以然来。

两年多没碰android,才知道已经使用了新的语言,还以为是自编译自解析的。。

求指点下怎么回事,非常感谢

Static Temporary HotSpot Name and Password

Hey guys,

Is it possible to set a default temporary WIFI name and password?

Every time I enable the Temporary WIFI it changes the WIFI name and password. It's kind of a hassle to have to keep finding the new name and entering the password.

For example my current WIFI name and password is AndroidShare_9953, pw: 1ee912c1330. If I use it again later, it changes to something else.

I know it'll probably take time to make the update, but can someone show me where in the code I could hack it so that I can enter a static WIFI name and password?

Thanks!

DNS leak with tethered VPN

I tested the USB tethered VPN on most known DNS leak websites. All of them leaks tethered VPN. I tried the DNS leak on the hotspot (USB tehering) phone and this does not leak the DNS. It seem that VPN hotspot leaks the DNS. If someone could replicate the issue please post the conditions here. I tested with 2 VPN ( one commercial and one that I own). Same result, leaks the DNS on servers in Asia-Pacific areas or others.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.