Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save Denisuu/162800ba5ad2be19bff2396d3767a1ef to your computer and use it in GitHub Desktop.

Select an option

Save Denisuu/162800ba5ad2be19bff2396d3767a1ef to your computer and use it in GitHub Desktop.
Working AltServer Wifi Refresh on Linux - Updated 2025
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