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
9
4
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
# ---------------------------
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.