Forked from BlwLeon/Working AltServer Wifi Refresh on Linux.txt
Created
October 28, 2025 15:20
-
-
Save Denisuu/162800ba5ad2be19bff2396d3767a1ef to your computer and use it in GitHub Desktop.
Working AltServer Wifi Refresh on Linux - Updated 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| First of all i want to say that i did this project on an Raspberry Pi 3 with Debian 64 Bit on it. | |
| Also, do *NOT* use this to install Altstore (use an Windows or MacOS build for this) this project is primary for refreshing via wifi | |
| You will need one of those operating systems to proceed anyway | |
| Start with bulilding necessary files for the project. (do apt update and upgrade on a new machine obviously) | |
| sudo apt install -y \ | |
| libavahi-compat-libdnssd-dev \ | |
| usbmuxd \ | |
| ninja-build \ | |
| ldc \ | |
| libplist-dev \ | |
| libimobiledevice-dev \ | |
| libgtk-3-0 \ | |
| dub \ | |
| openssl | |
| Then build and install the linkend projects in order | |
| https://github.com/libimobiledevice/libplist | |
| https://github.com/libimobiledevice/libimobiledevice-glue#debian--ubuntu-linux | |
| https://github.com/libimobiledevice/libtatsu | |
| https://github.com/libimobiledevice/libimobiledevice#debian--ubuntu-linux | |
| Install: https://rustup.rs/ | |
| Then do: | |
| rustup toolchain install stable | |
| rustup default stable | |
| When installed do a reboot and go into your file explorer and search for /lib/systemd/system/usbmuxd.service | |
| You need to add the following at the bottom with one space free: | |
| [Install] | |
| WantedBy=multi-user.target | |
| Now you should be able to do | |
| sudo systemctl enable --now avahi-daemon.service | |
| sudo systemctl enable --now usbmuxd | |
| After that you are ready to install the scripts. | |
| Download the newest version from release tab for your device | |
| https://github.com/NyaMisty/AltServer-Linux | |
| https://github.com/jkcoxson/netmuxd | |
| Now you can make them executables | |
| I would recommend to just keep them in /home/usr | |
| When you like to keep order on your machine you can make your own directories but you have to change the paths in the scripts later. | |
| chmod +x <name-of-altserver-file> | |
| chmod +x <name-of-netmuxd-file> | |
| The files are set up now! | |
| Now we connect your apple device to the pi | |
| For wifi sync you have to enable it on the Mac Finder or Itunes App Windows. | |
| (There is an bug with newer Windows Versions, fix for it is here:) | |
| https://www.reddit.com/r/AltStore/comments/r27v3w/itunes_wifi_sync_on_windows_simply_doesnt_work/?rdt=32975 | |
| When you have enabled it connect your apple device to the linux via usb and do: | |
| idevicepair pair | |
| idevicepair validate | |
| If you get "command not found" you did not build something correctly from the steps above. (Most likely libimobiledevice) | |
| Now you can unplug the devive from linux and check if you did everything right with checking the connection to the phone | |
| on port 62078 via telnet: | |
| sudo apt install telnet | |
| telnet <ip.of.your.apple.device> 62078 | |
| When it says "connected..." you did everything right | |
| You can find the IP in the Wlan setting of your apple device | |
| You may have to do sudo ufw disable to get a connection | |
| With the Device ready to pair we can setup the anisette server for the altserver | |
| You can use any server you want, i personally did this: | |
| Download the newest Version of Provision for your device from release tab (with wget or sum) | |
| https://github.com/Dadoum/Provision/tree/main | |
| Mark it as executable with | |
| chmod +111 <your-anisette-server-file-name> | |
| Everything is now setup too run the AltServer | |
| I will provide two scripts where you have to change the names/directories to get them to work | |
| The first script is for starting the anisette + altserver with the right conditions: | |
| #!/bin/bash | |
| cd /home/<your-username> | |
| # Start the Anisette Server in Background | |
| ./<name-of-anisette-server-file> -n 127.0.0.1 -p 6969 & | |
| ANISETTE_PID=$! | |
| # Wait until Anisette Server is UP | |
| for i in {1..10}; do | |
| if curl -s http://127.0.0.1:6969 > /dev/null; then | |
| echo "Anisette-Server is running" | |
| break | |
| fi | |
| sleep 2 | |
| done | |
| # Setting Right conditions and starting Altserver | |
| export ALTSERVER_ANISETTE_SERVER=http://127.0.0.1:6969 | |
| ./<name-of-alt-server-file> & | |
| Save this as a .sh file with a name of your choice in the same directory as altserver and netmuxd | |
| Now we can create the second script to start usbmuxd and netmuxd before altserver | |
| Make sure to install screen before since netmuxd needs it to co-exist with usbumxd and altserver | |
| sudo apt install screen | |
| Now you can save the second script | |
| #!/bin/bash | |
| # Helps to see if a screen already exists | |
| screen_exists() { | |
| screen -list | grep -q "\.$1" | |
| } | |
| # Step 1: Start usbmuxd | |
| echo "[*] Start usbmuxd..." | |
| usbmuxd --user & | |
| sleep 2 | |
| # Step 2: Start netmuxd in Screen (with sudo) | |
| if screen_exists "netmuxd"; then | |
| echo "[!] Screen 'netmuxd' already exists. Didnt restart." | |
| else | |
| echo "[*] Start netmuxd in Screen 'netmuxd' with sudo..." | |
| screen -dmS netmuxd bash -c "sudo ./<Name-of-netmuxd-file>; exec bash" | |
| sleep 2 | |
| fi | |
| # Waiting | |
| echo "[*] Waits 5 Seconds for netmuxd to start..." | |
| sleep 5 | |
| # Step 3: Start AltServer | |
| if screen_exists "altserver"; then | |
| echo "[!] Screen 'altserver' already exists. Didnt restart." | |
| else | |
| if [[ -f ./start_altserver.sh ]]; then | |
| echo "[*] Start AltServer in Screen 'altserver'..." | |
| screen -L -Logfile altserver.log -dmS altserver bash -c "./<name-of-first-script>.sh; exec bash" | |
| echo "[*] AltServer started. Log: altserver.log" | |
| else | |
| echo "[✗] didnt find first script: $(pwd)" | |
| fi | |
| fi | |
| echo "[✓] Done." | |
| Since this will be the "AltServer with Wifi Sync" program save this as something like "Start_Altserver".sh | |
| You have to make both .sh files executable with chmod +x | |
| Do a sudo reboot and try if ./Start_Altserver.sh or whatever name you choose is working | |
| With screen -ls you can check what screens are running | |
| It should say two with the names altserver and netmuxd | |
| If nothing or only one screen is shown you did something wrong with the names. | |
| If your system requieres it you need to make the netmuxd file always executable as sudo since the script | |
| will not fill in your password and i think screen doesnt even support it. | |
| When screen -ls shows 2 screens you did everything right | |
| Now you can press the "refresh all" button on altstore to see if its connecting right | |
| If you get "AltServer could not be found" you messed something up with the AltServer Setup/Script One | |
| If you get "... wrong json" or something you messed something up with the Anisette Server | |
| If you get "Altserver didnt find this device" you messe something up with netmuxd/connection process earlier | |
| Make sure with screen -r netmuxd that its running as sudo | |
| When its not running as sudo you most likely see a panic error (it will not work even when it says that your device is there) | |
| A heartbeat error is most likely when usbmuxd is not running properly. Considering putting it in the autostart | |
| when its not going away | |
| When its refreshing without issues you sucsessfully set up the AltServer to wifi refresh your apple devices. | |
| Didnt tested it yet but it should work with multiple devices simply setup any new devices like said above in the usb part | |
| Keep in mind when testing and looking at the logs that netmuxd only sees the apple device when its turned on | |
| Dont be confused when its removing devices. It always does it when a device goes in stand by. | |
| If you want you can put the final script at the bottom of the autostart file of crontab | |
| sudo apt install cron | |
| crontab -e | |
| @reboot sleep 20 && /home/<name-of-your-user>/<name-of-script2>.sh | |
| This should start the whole package of processes in the right order on any startup or reboot | |
| Let me know if anything isnt clear or some problem wich isnt named appears | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment