Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

wwwonka

macrumors newbie
Original poster
Jan 11, 2024
10
5
As some of you certainly know, since macOS Sequoia 15.4.1, we lost official support for our beloved iPod classics

Yesterday I got lucky while brute-forcing my way to access the files without the use of a Windows VM or restore the iPod and found out that I could use it just like before updating macOS.
So here is my solution Possibly although the pre-requisite, possibly, is for your iPod to have disk mode already enabled.
Basically, by mounting it as a drive, the music syncing will re-work again with Swinsian, WALTR or even iTunes 10.7, provided that these have Full Disk Access in your System Settings.

Step by step:
1. Launch the System Information app, and go to the USB tab, then locate your iPod and copy the Volume UUID of your partition:

Screenshot 2025-08-19 at 13.56.27.png


2. Open a Terminal and modify this script by pasting your Volume UUID on line 3, then run it:

#!/bin/bash

# 🔧 Set your iPod's Volume UUID here (no need for quotes or brackets)
VOLUME_UUID=ADCE7BAE-16DB-380C-8203-8FCB9D2C5791

# Clean it up (remove quotes/braces if pasted accidentally)
VOLUME_UUID=$(echo $VOLUME_UUID | tr -d '"{}')

# Find the device node for this UUID
DRIVE_IDENTIFIER=$(diskutil info -plist $VOLUME_UUID | \
plutil -extract DeviceNode xml1 -o - - | \
sed -n 's:.*<string>\(.*\)</string>.*:\1:p')

# Get the volume name dynamically
VOLUME_NAME=$(diskutil info -plist "$DRIVE_IDENTIFIER" | \
plutil -extract VolumeName xml1 -o - - | \
sed -n 's:.*<string>\(.*\)</string>.*:\1:p')

# Get the filesystem type (e.g. msdos, hfs)
FS_TYPE=$(diskutil info -plist "$DRIVE_IDENTIFIER" | \
plutil -extract FilesystemName xml1 -o - - | \
sed -n 's:.*<string>\(.*\)</string>.*:\1:p')

# Mountpoint under /Volumes
MOUNTPOINT_DIR="/Volumes/$VOLUME_NAME"

echo "Device: $DRIVE_IDENTIFIER"
echo "Volume name: $VOLUME_NAME"
echo "Filesystem: $FS_TYPE"

# Safety check: is it already mounted?
if mount | grep -q "on $MOUNTPOINT_DIR "; then
echo "⚠️ $VOLUME_NAME is already mounted at $MOUNTPOINT_DIR"
exit 0
fi

# Make sure the mountpoint exists
sudo mkdir -p "$MOUNTPOINT_DIR"

# Mount based on detected filesystem
case "$FS_TYPE" in
"MS-DOS FAT32"|"MS-DOS"|"FAT32")
echo "Mounting as FAT32..."
sudo mount_msdos "$DRIVE_IDENTIFIER" "$MOUNTPOINT_DIR"
;;
"Journaled HFS+"|"HFS+"|"Mac OS Extended")
echo "Mounting as HFS+..."
sudo mount_hfs "$DRIVE_IDENTIFIER" "$MOUNTPOINT_DIR"
;;
*)
echo "❌ Unsupported filesystem: $FS_TYPE"
exit 1
;;
esac

echo "✅ Mounted at $MOUNTPOINT_DIR"

There you go.
You should see the iPod pop up in your Finder! I just have a Windows formatted iPod so I'm not 100% sure it works with Mac-formatted ones since I havent tried. But the script takes that into account, so I hope it works for whoever find it.

Since trying to mount it with `diskutil` fails, but doing it with the more low-level `mount` command does work, all of this sure taste like Apple just blocks iPods from connecting as external drives deliberately since Sequoia. Let's all have a collective sight while remembering the magic word:

courage.jpeg


Cheers & long live your iPod!
 
Last edited:
Actually, here is a script that should 'just work™' for everyone:
#!/usr/bin/env bash
#
# iPod Auto-Mounter for macOS Sequoia 15.4 and up
# ---------------------------
# Looks for connected iPods (Vendor ID = Apple 0x05ac),
# matches them against known Product IDs,
# detects the filesystem, and mounts them under /Volumes/<VolumeName>.
#

# ---------------------------
# Prevent Finder from showing "Restore iPod" popup
killall AMPDeviceDiscoveryAgent 2>/dev/null
# ---------------------------

# ---------------------------
# CONFIG: Supported iPod Product IDs (hex, lowercase, no 0x prefix) source:https://theapplewiki.com/wiki/USB_Product_IDs
IPOD_PRODUCT_IDS=(
"1201" # iPod with dock connector (3rd generation)
"1202" # iPod (1st and 2nd generation)
"1203" # iPod with Click Wheel (4th generation)
"1204" # iPod Photo / iPod with color display
"1205" # iPod mini (1st and 2nd generation)
"1209" # iPod with video (5th generation)
"120A" # iPod nano
"1220" # iPod nano (2nd generation) (DFU Mode)
"1221" # iPod shuffle (2nd generation) (DFU Mode)
"1223" # iPod classic (6th gen, DFU Mode) / iPod nano (3rd gen, DFU Mode)
"1225" # iPod nano (4th generation) (DFU Mode)
"1231" # iPod nano (5th generation) (DFU Mode)
"1232" # iPod nano (6th generation) (DFU Mode)
"1234" # iPod nano (7th generation) (DFU Mode)
"1240" # iPod nano (2nd generation) (WTF Mode)
"1241" # iPod classic (6th generation) (Late 2007, WTF Mode)
"1242" # iPod nano (3rd generation) (WTF Mode)
"1243" # iPod nano (4th generation) (WTF Mode)
"1245" # iPod classic (6th generation) (Late 2008, WTF Mode)
"1246" # iPod nano (5th generation) (WTF Mode)
"1247" # iPod classic (6th generation) (Late 2009, WTF Mode)
"1248" # iPod nano (6th generation) (WTF Mode)
"1249" # iPod nano (7th generation) (Late 2012, WTF Mode)
"124A" # iPod nano (7th generation) (Mid 2015, WTF Mode)
"1250" # iPod classic (6th generation) (Late 2012, WTF Mode)
"1260" # iPod nano (2nd generation)
"1261" # iPod classic (6th generation)
"1262" # iPod nano (3rd generation)
"1263" # iPod nano (4th generation)
"1265" # iPod nano (5th generation)
"1266" # iPod nano (6th generation)
"1267" # iPod nano (7th generation)
"1300" # iPod shuffle (1st and 2nd generation)
)
APPLE_VENDOR_ID="0x05ac" # All iPods report Apple’s USB Vendor ID
# ---------------------------

echo "🔍 Scanning for connected iPods..."

# ---------------------------
# Capture all matching BSD names into a variable
MATCHES=$(system_profiler SPUSBDataType | awk -v vids="$APPLE_VENDOR_ID" '
/Product ID:/ {pid=$3}
/Vendor ID:/ {vid=$3}
/BSD Name:/ {bsd=$3; if (vid!="" && pid!="" && bsd!="") print vid, pid, bsd}
')
# ---------------------------

# ---------------------------
# If no matches found, print message and exit
if [[ -z "$MATCHES" ]]; then
echo "⚠️ No iPod detected."
exit 0
fi
# ---------------------------

# ---------------------------
# Process each matched iPod
echo "$MATCHES" | while read -r VENDOR_ID PRODUCT_ID BSD_NAME; do
# Only continue if Vendor is Apple
[[ "$VENDOR_ID" != "$APPLE_VENDOR_ID" ]] && continue

# Only continue if BSD name is a partition (diskXsY, not diskX)
[[ "$BSD_NAME" =~ s[0-9]+$ ]] || continue

# Check if PRODUCT_ID matches one of the iPod IDs in our list
for PID in "${IPOD_PRODUCT_IDS[@]}"; do
if [[ "$PRODUCT_ID" == "0x$PID" ]]; then
DRIVE_IDENTIFIER="/dev/$BSD_NAME"
echo "✅ Found iPod (Product ID $PID) at $DRIVE_IDENTIFIER"

# ---------------------------
# Extract volume metadata
VOLUME_NAME=$(diskutil info -plist "$DRIVE_IDENTIFIER" | \
plutil -extract VolumeName xml1 -o - - | \
sed -n 's:.*<string>\(.*\)</string>.*:\1:p')

FS_TYPE=$(diskutil info -plist "$DRIVE_IDENTIFIER" | \
plutil -extract FilesystemName xml1 -o - - | \
sed -n 's:.*<string>\(.*\)</string>.*:\1:p')

MOUNTPOINT="/Volumes/$VOLUME_NAME"

echo " Volume name: $VOLUME_NAME"
echo " Filesystem: $FS_TYPE"
# ---------------------------

# Skip if already mounted
if mount | grep -q "on $MOUNTPOINT "; then
echo "⚠️ $VOLUME_NAME already mounted at $MOUNTPOINT"
continue
fi

# Ensure mountpoint exists
sudo mkdir -p "$MOUNTPOINT"

# ---------------------------
# Mount depending on filesystem
case "$FS_TYPE" in
"MS-DOS FAT32"|"MS-DOS"|"FAT32")
echo "📀 Mounting $VOLUME_NAME as FAT32..."
sudo mount_msdos "$DRIVE_IDENTIFIER" "$MOUNTPOINT"
;;
"Journaled HFS+"|"HFS+"|"Mac OS Extended")
echo "📀 Mounting $VOLUME_NAME as HFS+..."
sudo mount_hfs "$DRIVE_IDENTIFIER" "$MOUNTPOINT"
;;
*)
echo "❌ Unsupported filesystem: $FS_TYPE"
;;
esac

echo "✅ Mounted $VOLUME_NAME at $MOUNTPOINT"
fi
done
done
# ---------------------------
 
Fantastic work, thank you for sharing! I will try it as soon as I am somehow forced onto an OS past 15.3.2
This also means that the Apple Music won’t work for syncing anymore, correct? Time for me to finally make the switch then…
 
  • Like
Reactions: wwwonka
Fantastic work, thank you for sharing! I will try it as soon as I am somehow forced onto an OS past 15.3.2
This also means that the Apple Music won’t work for syncing anymore, correct? Time for me to finally make the switch then…

It actually does work. ... Quite surprising heh.


Screenshot 2025-08-24 at 22.19.54 2.png
 
  • Wow
Reactions: johnnytravels
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.