{"id":20872910,"url":"https://github.com/felikcat/unlimited-hotspot","last_synced_at":"2025-04-05T00:05:19.604Z","repository":{"id":193408572,"uuid":"688728741","full_name":"felikcat/unlimited-hotspot","owner":"felikcat","description":"Remove speed restrictions on your hotspot internet (iOS, iPadOS, Android, Quectel), and allows hotspots on any plan (rooted Android \u0026 Quectel only).","archived":false,"fork":false,"pushed_at":"2025-03-19T20:40:41.000Z","size":2568,"stargazers_count":202,"open_issues_count":3,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-28T23:03:42.526Z","etag":null,"topics":["android","bypass-throttling","cellphone","data","hotspot","hotspot-wifi","internet","ios","linux","macos","mobile","phone","qualcomm","quectel","tablet","tether","tethering","unlimited","unlimited-data","windows"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/felikcat.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-08T01:29:22.000Z","updated_at":"2025-03-28T13:19:43.000Z","dependencies_parsed_at":"2024-02-06T13:13:38.603Z","dependency_job_id":"8cdaefbe-b63a-4e23-a727-ea5275b420d5","html_url":"https://github.com/felikcat/unlimited-hotspot","commit_stats":null,"previous_names":["felikcat/unlimited-hotspot"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felikcat%2Funlimited-hotspot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felikcat%2Funlimited-hotspot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felikcat%2Funlimited-hotspot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felikcat%2Funlimited-hotspot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felikcat","download_url":"https://codeload.github.com/felikcat/unlimited-hotspot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266562,"owners_count":20910836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","bypass-throttling","cellphone","data","hotspot","hotspot-wifi","internet","ios","linux","macos","mobile","phone","qualcomm","quectel","tablet","tether","tethering","unlimited","unlimited-data","windows"],"created_at":"2024-11-18T06:21:52.050Z","updated_at":"2025-04-05T00:05:19.576Z","avatar_url":"https://github.com/felikcat.png","language":"Shell","funding_links":[],"categories":["🌐 Network and Connectivity"],"sub_categories":["Hotspot Tools"],"readme":":experimental:\n:imagesdir: Pictures/\nifdef::env-github[]\n:icons:\n:tip-caption: :bulb:\n:note-caption: :information_source:\n:important-caption: :heavy_exclamation_mark:\n:caution-caption: :fire:\n:warning-caption: :warning:\nendif::[]\n\n== About\n[.lead]\nThis guide compared to others -\u003e PDANet, FoxFi, NetShare, EasyTether, Wi-Fi Tether Router, TetherMe, iTether, MyWi, iPhoneModem:\n\n. Supports hotspots from *Android* phones \u0026 tablets, *iOS*, *iPadOS*, and *Quectel* modems.\n. Methods used are all high performance and reliability, unlike SSH tunneling.\n. Fully open-source and free of charge.\n- Exception: the non-jailbroken iOS and iPadOS method, not open-source -- but is free of charge.\n. On \"unlimited\" telecom plans, grants you unlimited data for hotspots.\n. Moves past various types of throttling, such as limited video quality on YouTube or other streaming services.\n\n== 1. Preparation / Hosting an unlimited hotspot\n\n.Quectel modems\n[%collapsible]\n====\n\nCAUTION: Never spoof to an IMEI of a device you do not own, it's illegal in the United States, and you will block the device of whoever uses it -- but only if it's on the same telecom.\n\n.Spoof the Quectel modem's IMEI to a phone or tablet you own that has mobile data capability:\n* `AT+EGMR=1,7,\"The IMEI here\"`\n\n====\n\n.Non-jailbroken *iOS* and *iPadOS*\n[%collapsible]\n====\n. https://pairvpn.com/install[Install PairVPN] from the App Store on the iOS or iPadOS device, and on the clients (such as a Windows laptop).\n\n. Connect the client to your iOS/iPadOS device via its \"Mobile Hotspot\" or through USB tethering.\n\n. Run PairVPN as a server on the iOS/iPadOS device, then use the PairVPN client on devices that connect to that server.\n- For as long as PairVPN is used, there won't be hotspot data usage.\n- Enable \"Share Location\" so that PairVPN can run in the background at all times, and also allow PairVPN to send notifications.\n\n====\n\n.Non-rooted *Android*\n[%collapsible]\n====\n\n. https://github.com/pyamsoft/tetherfi#tetherfi[Install TetherFi] on the Android device.\n\n. Open the TetherFi app.\n\n. Configure the following in the \"Hotspot\" tab:\n- Broadcast frequency -\u003e 5GHz\n- Enable all: Wake Locks\n- Enable: Bind Proxy to All Interfaces\n\n. Open the \"How To\" tab and follow its instructions.\n\n====\n\n.Rooted *Android*\n[%collapsible]\n====\n\n. https://topjohnwu.github.io/Magisk/[Install Magisk].\n- For macOS, I recommend using https://brew.sh/[Homebrew] to install ADB using: `brew install android-platform-tools`.\n- When it says to \"Copy the boot/init_boot/recovery image to your device\", that image they're asking for is located in the zip file for the OS you downloaded.\n** For the Google Pixel 7 Pro: Extract `image-cheetah-ap3a.241105.007.zip`, then extract `bootloader-cheetah-cloudripper-15.0-11969070.img`. Now there is an `init_boot.img` extracted which can be transferred over to the Pixel phone so you can use Magisk to patch it. Continue to follow the official instructions.\n\n. Download the https://github.com/felikcat/unlimited-hotspot/releases/download/v7/unlimited-hotspot-v7.zip[Unlimited Hotspot] Magisk module.\n. Open Magisk -\u003e Modules -\u003e Install from storage -\u003e Select the \"unlimited-hotspot-v7.zip\" that was downloaded.\n. Reboot.\n\n====\n\n== 2. Moving past throttling\n\nWARNING: If using the PairVPN method, VPNs cannot be used, only anti-DPI applications that operate via proxy. The TetherFi method still allows for VPNs, but requires a VPN that can run off a proxy such as AirVPN. It's recommended to manually configure programs such as the Brave browser with using a proxy, instead of attempting a system-wide proxy; for SpoofDPI this would be running with `-system-proxy false`.\n\nNOTE: https://airvpn.org/[AirVPN] is useful if you require torrenting as it has comprehensive port forwarding support. +\nhttps://mullvad.net[Mullvad] generally has the fastest speeds. +\nhttps://www.mysteriumvpn.com/[Mysterium] or https://resivpn.com/[ResiVPN] is useful if you require residental IPs, or use streaming services that block VPNs. +\n- Mysterium is not as fast as AirVPN or Mullvad, while ResiVPN has a very limited selection of locations. +\n- https://www.mysteriumdark.com/[Mysterium Dark] lets you pay only by data usage, while https://www.mysteriumvpn.com/[Mysterium] is a subscription model.\n\nTIP: For every macOS or other OS device you use, you'd have to install SpoofDPI (or some other anti-DPI application) on each; they do not have to be the same anti-DPI application.\n\n.Install anti-DPI applications, specific to each OS:\n\n* FreeBSD, OpenBSD: https://github.com/bol-van/zapret/blob/master/docs/bsd.eng.md[zapret].\n\n* macOS and Linux: https://github.com/xvzc/SpoofDPI[SpoofDPI], or https://github.com/krlvm/PowerTunnel#configuring[PowerTunnel]. +\nhttps://github.com/bol-van/zapret/blob/master/docs/readme.eng.md[zapret] exists but has difficulty with Apple chipset macOS (for macOS, use zapret's https://github.com/bol-van/zapret/blob/master/docs/bsd.eng.md[BSD instructions]).\n* Windows: https://github.com/ValdikSS/GoodbyeDPI[GoodbyeDPI], or https://github.com/macronut/ghostcp[GhosTCP].\n* Android: https://github.com/dovecoteescapee/ByeDPIAndroid[ByeDPI]; run it in VPN mode.\n* iOS/iPadOS: https://apps.apple.com/in/app/1-1-1-1-faster-internet/id1423538627[Cloudflare's 1.1.1.1 app]; any other VPNs utilizing WireGuard or OpenVPN work too.\n\n.How to use PowerTunnel on macOS\n[%collapsible]\n====\n\n. Make sure the https://github.com/krlvm/PowerTunnel/releases[latest PowerTunnel.jar] is downloaded.\n\n. Download the https://adoptium.net/download/[Adoptium installer] and open it.\n\n. After you got done installing Adoptium \"Temurin\", in *Finder*, kbd:[Left Option] + kbd:[Right Click] PowerTunnel.jar then click \"Open\". +\nimage:kbmagic.jpeg[]\n\n. image:settings_powertunnel.png[]\n\n====\n\n=== Additional required steps\n\n.HTTPS \"packet chunking\" (also called TCP fragmentation) is required to bypass throttling.\n[%collapsible]\n====\n\n. image:PowerTunnel1.png[480,360]\n. Use a low chunk size, such as \"1\": + \nimage:PowerTunnel2.png[480,360]\n\n====\n\n.If using PowerTunnel and TetherFi (for non-rooted Android).\n[%collapsible]\n====\n\n. Go to PowerTunnel, then click on \"Options\".\n. Configure the upstream proxy server to match what TetherFi says to use. For my case, it was 192.168.49.1 with port 8228 for the HTTP/HTTPS protocol.\n- image:PowerTunnel3.png[480,360]\n\n====\n\n.macOS\n[%collapsible]\n====\n. https://github.com/felikcat/unlimited-hotspot/archive/refs/heads/main.zip[Download Unlimited Hotspot], then open `unlimited-hotspot-main.zip` in *Finder* to extract it.\n. After extracted, open the \"unlimited-hotspot-main\" folder, then open its \"macOS\" folder.\n. Open *Terminal*.\n\n. Type `sudo -i`, enter your login password, then press kbd:[Enter].\n. Type `cp` then drag the `set-ios-tcp-stack.sh` file in, press kbd:[Space], type in `/var/root` and press kbd:[Enter].\n. Type `cp` then drag the `felikcat.set.ios.tcpstack.plist` file in, press kbd:[Space], type in `/Library/LaunchDaemons` and then press kbd:[Enter].\n. `chmod +x /var/root/set-ios-tcp-stack.sh`\n. `launchctl load -w /Library/LaunchDaemons/felikcat.set.ios.tcpstack.plist`\n\n.Now we need to add three Packet Filter rules and enable PF.\n. `nano /etc/pf.conf`\n. Add the following three lines before `nat-anchor`: +\nimage:pf_rules.png[]\n. `pfctl -f /etc/pf.conf` then `pfctl -e`\n\n'''\n====\n\n=== Routers\nFor Quectel modems, or if the hotspot device is plugged into a router, then these steps are required:\n\n.Asuswrt-Merlin\n[%collapsible]\n====\n. `Advanced Settings - WAN` -\u003e disable `Extend the TTL value` and `Spoof LAN TTL value`.\n. `Advanced Settings - Administration`\n- `Enable JFFS custom scripts and configs` -\u003e \"Yes\"\n- `Enable SSH` -\u003e \"LAN only\"\n. Replace the LAN IP and login name if needed: `$ ssh 192.168.50.1 -l asus`\n- Use other SSH clients if preferred, such as MobaXterm or Termius.\n. `# nano /jffs/scripts/wan-event`\n\n[source, shell]\n----\n#!/bin/sh\n# shellcheck disable=SC2068\nSay() {\n  printf '%s%s' \"$$\" \"$@\" | logger -st \"($(basename \"$0\"))\"\n}\nWAN_IF=$1\nWAN_STATE=$2\n\n# Call appropriate script based on script_type\nSERVICE_SCRIPT_NAME=\"wan${WAN_IF}-${WAN_STATE}\"\nSERVICE_SCRIPT_LOG=\"/tmp/WAN${WAN_IF}_state\"\n\n# Execute and log script state\nif [ -f \"/jffs/scripts/${SERVICE_SCRIPT_NAME}\" ]; then\n  Say \"     Script executing.. for wan-event: $SERVICE_SCRIPT_NAME\"\n  echo \"$SERVICE_SCRIPT_NAME\" \u003e\"$SERVICE_SCRIPT_LOG\"\n  sh /jffs/scripts/\"${SERVICE_SCRIPT_NAME}\" \"$@\"\nelse\n  Say \"     Script not defined for wan-event: $SERVICE_SCRIPT_NAME\"\nfi\n\n##@Insert##\n----\n\n`# nano /jffs/scripts/wan0-connected`\n[source, shell]\n----\n#!/bin/sh\n\n# HACK: I am unsure of what to check.\n## Do this too early and the TTL \u0026 HL won't be set.\nsleep 5s; modprobe xt_HL; wait\n\n# Removes these iptables entries if present.\n# WARNING: Only removes these entries once, and never assumes the same entries are present twice.\niptables -t mangle -D PREROUTING -i usb+ -j TTL --ttl-inc 2\niptables -t mangle -D POSTROUTING -o usb+ -j TTL --ttl-inc 2\nip6tables -t mangle -D PREROUTING ! -p icmpv6 -i usb+ -j HL --hl-inc 2\nip6tables -t mangle -D POSTROUTING ! -p icmpv6 -o usb+ -j HL --hl-inc 2\n\n# Move past TTL \u0026 HL hotspot detections.\n## Increments the TTL \u0026 HL by 2 (1 for the router, 1 for the devices connected to the router).\niptables -t mangle -A PREROUTING -i usb+ -j TTL --ttl-inc 2\niptables -t mangle -I POSTROUTING -o usb+ -j TTL --ttl-inc 2\nip6tables -t mangle -A PREROUTING ! -p icmpv6 -i usb+ -j HL --hl-inc 2\nip6tables -t mangle -I POSTROUTING ! -p icmpv6 -o usb+ -j HL --hl-inc 2\n----\nNow, set permissions correctly to avoid this error: `custom_script: Found wan-event, but script is not set executable!` +\n`# chmod a+rx /jffs/scripts/*` +\n`# reboot`\n\n====\n\n\n.GoldenOrb\n[%collapsible]\n====\nCopy the following TTL settings: +\nimage:firefox_wsJ71hUwXh.png[] +\nimage:firefox_lnpySSfHOt.png[]\n\n====\n\n.OpenWrt\n[%collapsible]\n====\n. `Network` -\u003e `Firewall` -\u003e `Custom Rules`\n[source, shell]\n----\n# Removes these iptables entries if present; only removes once, so if the same entry is present twice (script assumes this never happens), it would need to be removed twice.\niptables -t mangle -D PREROUTING -i usb+ -j TTL --ttl-inc 2\niptables -t mangle -D POSTROUTING -o usb+ -j TTL --ttl-inc 2\nip6tables -t mangle -D PREROUTING ! -p icmpv6 -i usb+ -j HL --hl-inc 2\nip6tables -t mangle -D POSTROUTING ! -p icmpv6 -o usb+ -j HL --hl-inc 2\n\n# Move past TTL \u0026 HL hotspot detections.\n## Increments the TTL \u0026 HL by 2 (1 for the router, 1 for the devices connected to the router).\niptables -t mangle -A PREROUTING -i usb+ -j TTL --ttl-inc 2\niptables -t mangle -I POSTROUTING -o usb+ -j TTL --ttl-inc 2\nip6tables -t mangle -A PREROUTING ! -p icmpv6 -i usb+ -j HL --hl-inc 2\nip6tables -t mangle -I POSTROUTING ! -p icmpv6 -o usb+ -j HL --hl-inc 2\n----\n\n====\n\n== 3. Using dnscrypt2 to get past webpage blocks\n\nTIP: Unnecessary if using a VPN or some anti-DPI programs, be sure to test.\n\nhttps://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation[Installation instructions for other OSes], such as Windows, Linux, etc.\n\n.macOS\n[%collapsible]\n====\n. Go to https://ipleak.net/[AirVPN's IP Leak] to see your current DNS servers. Save a screenshot of this page.\n\n. https://brew.sh/[Install Homebrew] if you haven't already.\n\n. `brew install dnscrypt-proxy`\n\n. Be sure to read the information Brew gives you after it's done installing dnscrypt-proxy.\n- It is recommended to install dnscrypt-proxy's service.\n\n. Open *Settings*, go to Network, then click on the Network interface you are currently using; for me, that is \"USB 10/100/1G/2.5G LAN\".\n. Click \"Details...\" +\nimage:settings_dnscrypt.png[]\n. Go to DNS, press the Plus (+) button under \"DNS Servers\", then type in `127.0.0.1` +\nimage:settings_dnscrypt_2.png[]\n\n. Go back to https://ipleak.net/[AirVPN's IP Leak] to see if the changes to your DNS servers is successful; compare it to your prior screenshot.\n\n====\n\n== 4. Confirm the hotspot is un-throttled\n\n* Use https://fast.com[Netflix's Speedtest], then compare that result to https://www.waveform.com/tools/bufferbloat[Waveform's Bufferbloat Test]. +\n- This tests for throttling of streaming servers (Netflix), various forms of data fingerprinting, and hotspot detections.\n\n\n\n== 5. Improving internet speeds\n\n.*Android only* -\u003e Enable Data Saver:\n* This only works via USB, as it will block wireless hotspots.\n- Context: Data saver tells Android to restrict data to only the USB hotspot and which app is at the forefront.\n\n.*Android \u0026 iOS/iPadOS \u0026 Quectel* -\u003e Disable roaming:\n* *Android \u0026 iOS*: Search for \"Roaming\" in the Settings app, then disable it.\n- Context: Roaming to a different telecom usually has unavoidable throttling. Roaming kicks in when signal strength is either very poor or non-existent from your telecom. In T-Mobile USA's case, they roam on AT\u0026T with only up to 250kbps download \u0026 upload speeds on AT\u0026T's towers.\n\n.*Android \u0026 iOS/iPadOS \u0026 Quectel* -\u003e Switch cell tower providers specifically for problematic areas\n* *Android*: Settings -\u003e Network \u0026 internet -\u003e SIMs -\u003e Disable \"Automatically select network\"\n* *iOS*: Context -\u003e T-Mobile owns Sprint's towers. For me, Sprint has consistently better speeds at my home. +\nimage:ios_network_selection.PNG[width=281.5,height=305]\n\n.*Rooted Android \u0026 Quectel* -\u003e Using specific 4G, LTE, 5G NA, or 5G SA bands:\n* *Rooted Android*:\n. Install https://apkpure.com/netmonster/cz.mroczis.netmonster[NetMonster] for its network monitoring. Without NetMonster, you are blind to what bands are used, and their signal strength.\n\n. Install https://apkpure.com/network-signal-guru/com.qtrun.QuickTest[Network Signal Guru] then use it to set the allowed LTE bands to only the \"LTE 4x4 Bands\" listed on https://cacombos.com/device/G025E[cacombos.com] for your device. This could stabilize your speeds, and can potentially increase speeds.\n\n. If the ads bother you, enable Systemless Hosts in Magisk's settings, then install https://github.com/AdAway/AdAway/releases[AdAway] and use its Root method; do not use its VPN method.\n\n.*Android only* -\u003e Disable \"hotspot hardware acceleration\" in the Settings app:\n- *Only if* you have high ping or ping spiking issues, otherwise leave it enabled.\n\n== Appendices\n\n.Learning resources\n[%collapsible]\n====\n\n. https://archive.org/download/p173_20220313/p173.pdf\n. https://archive.org/download/technology-showcase-policy-control-for-connected-and-tethered-devices/technology-showcase-policy-control-for-connected-and-tethered-devices.pdf\n. https://archive.org/download/geneva_ccs19/geneva_ccs19.pdf\n. https://incolumitas.com/2021/03/13/tcp-ip-fingerprinting-for-vpn-and-proxy-detection/\n. https://github.com/NikolaiT/zardaxt\n. https://blog.cloudflare.com/optimizing-tcp-for-high-throughput-and-low-latency/\n. Showed that moving past the hotspot clasification on non-jailbroken iOS and iPadOS devcies is possible, via ad-hoc Wi-Fi on the client, and a proxy server on the iOS/iPadOS device: https://blog.cyrusroshan.com/post/phone-data-hotspot\n\n[.lead]\nThird-party scripts\n\n. `/jffs/scripts/wan-event` used for Asuswrt-Merlin is a refined version of https://www.snbforums.com/threads/wan-start-script-also-run-on-wan-stop.61295/#post-542636[this script].\n\n====\n\n*You've reached the end of this guide.* Star it if you liked it.\n\n'''\n\n=== Donations\nTip the apps or programs you rely on, such as TetherFi for non-rooted Android devices; some like PowerTunnel don't seem to take donations.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelikcat%2Funlimited-hotspot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelikcat%2Funlimited-hotspot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelikcat%2Funlimited-hotspot/lists"}