<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ipod on kinbiko.com</title><link>https://kinbiko.com/tags/ipod/</link><description>Recent content in Ipod on kinbiko.com</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 01 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kinbiko.com/tags/ipod/index.xml" rel="self" type="application/rss+xml"/><item><title>Installing Rockbox on an iPod Classic 7G with iFlash from Linux: a sector size odyssey</title><link>https://kinbiko.com/posts/2026-02-01-rockbox-ipod-classic-iflash-linux-sector-size/</link><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><guid>https://kinbiko.com/posts/2026-02-01-rockbox-ipod-classic-iflash-linux-sector-size/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This entire blog post was written by AI.
It is published because I want AI tools to more easily find and fix the problem I spent days debugging &amp;ndash; even with the assistance of AI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you&amp;rsquo;re trying to install Rockbox on a flash-modded iPod Classic from Linux and getting
&amp;ldquo;No partition found&amp;rdquo;, you might be hitting the same invisible wall I did. The root cause
turned out to be a mismatch in virtual sector sizes between different USB modes &amp;ndash; something
that no guide I found online mentions. This post documents the problem and the fix.&lt;/p&gt;
&lt;h2 id="the-setup"&gt;
The setup
&lt;a class="heading-link" href="#the-setup"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;iPod Classic 7th generation (Apple model A1238, Rockbox target &lt;code&gt;ipod6g&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;iFlash adapter with a 512 GB SD card&lt;/li&gt;
&lt;li&gt;Arch Linux host (no macOS, no Windows, no iTunes)&lt;/li&gt;
&lt;li&gt;Rockbox built from source (commit &lt;code&gt;ee3e630&lt;/code&gt;, January 2026)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-symptom"&gt;
The symptom
&lt;a class="heading-link" href="#the-symptom"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;After partitioning the SD card, formatting it FAT32, installing the &lt;code&gt;.rockbox&lt;/code&gt; directory,
and flashing the bootloader via DFU, the iPod would boot to:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Rockbox boot loader
Version: ee3e630efa-260131
Battery status ok: 4081 mV
id: &amp;#39;1 CompactFlash C0000&amp;#39; s:512*1
No partition found
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The bootloader could see the storage device (the iFlash adapter identifies as CompactFlash)
and correctly detected 512-byte sectors with a physical sector multiplier of 1. But it
couldn&amp;rsquo;t find or mount any partition.&lt;/p&gt;
&lt;h2 id="the-dead-ends"&gt;
The dead ends
&lt;a class="heading-link" href="#the-dead-ends"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="dead-end-1-the-old-bootloader-doesnt-support-4k-sectors"&gt;
Dead end 1: &amp;ldquo;the old bootloader doesn&amp;rsquo;t support 4K sectors&amp;rdquo;
&lt;a class="heading-link" href="#dead-end-1-the-old-bootloader-doesnt-support-4k-sectors"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The pre-built Rockbox 4.0 bootloader gave the same error. Rockbox&amp;rsquo;s source code has a
sector multiplier loop in &lt;code&gt;disk.c&lt;/code&gt; that tries mounting partitions at 1x, 2x, 4x, and 8x
the MBR&amp;rsquo;s LBA values to compensate for virtual sector size mismatches. I built the
bootloader from source to make sure I had this code. The new bootloader failed identically.&lt;/p&gt;
&lt;h3 id="dead-end-2-the-cluster-size-is-too-large"&gt;
Dead end 2: &amp;ldquo;the cluster size is too large&amp;rdquo;
&lt;a class="heading-link" href="#dead-end-2-the-cluster-size-is-too-large"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;mkfs.vfat -F 32&lt;/code&gt; on a 477 GiB partition with 4096-byte sectors chose 64 sectors per
cluster, producing 256 KB clusters. Rockbox&amp;rsquo;s &lt;code&gt;bpb_is_sane()&lt;/code&gt; rejects cluster sizes above
128 KB. Reformatting with &lt;code&gt;-s 8&lt;/code&gt; (32 KB clusters) fixed this check, but the &amp;ldquo;No partition
found&amp;rdquo; error persisted.&lt;/p&gt;
&lt;h3 id="dead-end-3-theres-a-stale-superfloppy-bpb-at-sector-0"&gt;
Dead end 3: &amp;ldquo;there&amp;rsquo;s a stale superfloppy BPB at sector 0&amp;rdquo;
&lt;a class="heading-link" href="#dead-end-3-theres-a-stale-superfloppy-bpb-at-sector-0"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The iPod&amp;rsquo;s sector 0 had leftover FAT32 BPB bytes from a previous format that could confuse
Rockbox&amp;rsquo;s superfloppy detection (where it tries to mount sector 0 directly as a filesystem
before checking the partition table). Zeroing the first 446 bytes of sector 0 eliminated
this, but didn&amp;rsquo;t help.&lt;/p&gt;
&lt;h2 id="the-actual-problem-virtual-sector-sizes"&gt;
The actual problem: virtual sector sizes
&lt;a class="heading-link" href="#the-actual-problem-virtual-sector-sizes"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s what was actually happening. It took reading the Rockbox bootloader source code to
figure it out.&lt;/p&gt;
&lt;h3 id="the-iflash-adapter-uses-512-byte-sectors"&gt;
The iFlash adapter uses 512-byte sectors
&lt;a class="heading-link" href="#the-iflash-adapter-uses-512-byte-sectors"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The iFlash adapter&amp;rsquo;s SD card storage uses standard 512-byte sectors at the ATA level. The
bootloader confirms this with &lt;code&gt;s:512*1&lt;/code&gt; &amp;ndash; 512-byte logical sectors, physical sector
multiplier of 1. This is the sector size that Rockbox uses when reading the MBR and FAT
filesystem internally.&lt;/p&gt;
&lt;h3 id="rockboxs-usb-mode-uses-4096-byte-virtual-sectors"&gt;
Rockbox&amp;rsquo;s USB mode uses 4096-byte virtual sectors
&lt;a class="heading-link" href="#rockboxs-usb-mode-uses-4096-byte-virtual-sectors"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;When Rockbox presents the iPod as a USB mass storage device, it multiplies the sector size
by 8. This is configured in the iPod Classic&amp;rsquo;s target header (&lt;code&gt;ipod6g.h&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#define DEFAULT_VIRT_SECTOR_SIZE 4096
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The USB stack calls &lt;code&gt;disk_set_sector_multiplier(8)&lt;/code&gt; before entering USB mode, making the
host see 4096-byte logical sectors. This is why &lt;code&gt;lsblk&lt;/code&gt; shows &lt;code&gt;LOG-SEC 4096&lt;/code&gt; when the iPod
is connected in normal Rockbox USB mode.&lt;/p&gt;
&lt;h3 id="linux-tools-respect-the-devices-reported-sector-size"&gt;
Linux tools respect the device&amp;rsquo;s reported sector size
&lt;a class="heading-link" href="#linux-tools-respect-the-devices-reported-sector-size"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;When you run &lt;code&gt;sfdisk&lt;/code&gt; or &lt;code&gt;fdisk&lt;/code&gt; on a device with 4096-byte logical sectors, the MBR
partition table entries are written in 4096-byte sector units. A partition starting at 1 MiB
is recorded as LBA sector 256 (256 * 4096 = 1,048,576 bytes).&lt;/p&gt;
&lt;p&gt;When you run &lt;code&gt;mkfs.vfat&lt;/code&gt; on that partition, it creates a FAT32 BPB with
&lt;code&gt;bytes_per_sector=4096&lt;/code&gt; to match the device.&lt;/p&gt;
&lt;h3 id="the-bootloader-reads-with-512-byte-sectors"&gt;
The bootloader reads with 512-byte sectors
&lt;a class="heading-link" href="#the-bootloader-reads-with-512-byte-sectors"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;When the iPod boots, it reads the MBR using its ATA driver at the native 512-byte sector
size. It sees LBA start value 256 and interprets it as byte offset 256 * 512 = 131,072 &amp;ndash;
not 1,048,576 where the partition actually starts.&lt;/p&gt;
&lt;p&gt;Rockbox has a multiplier loop that compensates for this by trying the LBA value multiplied
by 1, 2, 4, and 8. At 8x (256 * 8 = 2048, byte offset 2048 * 512 = 1,048,576), it finds
the correct location. But then it reads a BPB with &lt;code&gt;bytes_per_sector=4096&lt;/code&gt;, which creates
further complications in the FAT driver&amp;rsquo;s internal math. The mount fails.&lt;/p&gt;
&lt;h2 id="the-fix"&gt;
The fix
&lt;a class="heading-link" href="#the-fix"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The key insight came from reading the bootloader source code more carefully. There are
actually &lt;strong&gt;two different USB modes&lt;/strong&gt; with different sector sizes:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// bootloader/ipod-s5l87xx.c
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Voluntary USB mode (SELECT+RIGHT at boot):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;button_read_device&lt;/span&gt;() &lt;span style="color:#f92672"&gt;==&lt;/span&gt; (BUTTON_SELECT&lt;span style="color:#f92672"&gt;|&lt;/span&gt;BUTTON_RIGHT)) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;disk_set_sector_multiplier&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;IF_MD&lt;/span&gt;(i,) DEFAULT_VIRT_SECTOR_SIZE&lt;span style="color:#f92672"&gt;/&lt;/span&gt;SECTOR_SIZE);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;usb_mode&lt;/span&gt;(); &lt;span style="color:#75715e"&gt;// host sees 4096-byte sectors
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Error USB mode (partition mount failed):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;case&lt;/span&gt; ERR_RB:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;usb_mode&lt;/span&gt;(); &lt;span style="color:#75715e"&gt;// host sees 512-byte sectors! No multiplier set.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When the bootloader enters USB mode due to a &amp;ldquo;No partition found&amp;rdquo; error, it does NOT set
the sector multiplier. The host sees the ATA-native 512-byte sectors.&lt;/p&gt;
&lt;p&gt;This means the fix is straightforward: &lt;strong&gt;format while in the bootloader&amp;rsquo;s error-mode USB&lt;/strong&gt;.
The bootloader is already in this mode when showing &amp;ldquo;No partition found&amp;rdquo; and waiting for a
USB connection. Simply:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connect USB while the bootloader shows &amp;ldquo;No partition found&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Linux sees &lt;code&gt;/dev/sdX&lt;/code&gt; with 512-byte logical sectors&lt;/li&gt;
&lt;li&gt;Partition and format normally&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Wipe the first 1 MiB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dd &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/dev/zero of&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/dev/sdX bs&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;512&lt;/span&gt; count&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2048&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Create a single FAT32 LBA partition&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sfdisk --wipe always /dev/sdX &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;label: dos
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;unit: sectors
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;/dev/sdX1 : start=2048, type=0c
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Format with 32 KB clusters (Rockbox max is 128 KB)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkfs.vfat -F &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt; -s &lt;span style="color:#ae81ff"&gt;64&lt;/span&gt; -n IPOD /dev/sdX1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Mount and install Rockbox&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mount /dev/sdX1 /mnt/ipod
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;unzip rockbox.zip -d /mnt/ipod
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;umount /mnt/ipod
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After disconnecting and rebooting (MENU+SELECT), Rockbox boots successfully:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MBR has 512-byte sector LBA values that the bootloader reads correctly&lt;/li&gt;
&lt;li&gt;FAT32 BPB has &lt;code&gt;bytes_per_sector=512&lt;/code&gt; that the FAT driver handles natively&lt;/li&gt;
&lt;li&gt;No multiplier tricks needed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-to-tell-which-usb-mode-youre-in"&gt;
How to tell which USB mode you&amp;rsquo;re in
&lt;a class="heading-link" href="#how-to-tell-which-usb-mode-youre-in"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Check the logical sector size of the device:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /sys/block/sdX/queue/logical_block_size
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;512&lt;/strong&gt; &amp;ndash; you&amp;rsquo;re in bootloader error-mode USB (or a card reader). Safe to format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4096&lt;/strong&gt; &amp;ndash; you&amp;rsquo;re in Rockbox main firmware USB or voluntary bootloader USB. Do NOT
format from this mode. Reboot into the bootloader error mode first.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alternatively, &lt;code&gt;lsblk -o NAME,LOG-SEC,MODEL&lt;/code&gt; shows the sector size for all devices.&lt;/p&gt;
&lt;h2 id="other-things-i-learned-along-the-way"&gt;
Other things I learned along the way
&lt;a class="heading-link" href="#other-things-i-learned-along-the-way"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The iPod Classic doesn&amp;rsquo;t need a firmware partition.&lt;/strong&gt; Unlike older iPods (Video, Nano)
that store firmware on a dedicated disk partition, the iPod Classic 6G/7G stores its
firmware in NOR flash. A single FAT32 data partition is the correct layout.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The iFlash adapter identifies as &amp;ldquo;CompactFlash&amp;rdquo;, not &amp;ldquo;iPod&amp;rdquo;.&lt;/strong&gt; If you&amp;rsquo;re writing scripts
to auto-detect the device, match on the model string &amp;ldquo;CompactFlash&amp;rdquo;, not &amp;ldquo;iPod&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rockbox has a maximum cluster size of 128 KB.&lt;/strong&gt; On a 477 GiB partition with 512-byte
sectors, &lt;code&gt;mkfs.vfat&lt;/code&gt; will default to 128 sectors/cluster = 64 KB clusters. This is fine.
If you explicitly set &lt;code&gt;-s 64&lt;/code&gt; (32 KB clusters), that works too. Don&amp;rsquo;t go above &lt;code&gt;-s 256&lt;/code&gt;
(128 KB).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Most guides assume iTunes or Windows.&lt;/strong&gt; The standard advice for &amp;ldquo;No partition found&amp;rdquo; on
iPod Classic is &amp;ldquo;restore with iTunes.&amp;rdquo; iTunes creates a properly formatted disk because
Apple knows the correct parameters. If you&amp;rsquo;re on Linux without iTunes, you need to
understand the sector size situation yourself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Building Rockbox from source on Linux is straightforward.&lt;/strong&gt; The cross-compiler toolchain
builds non-interactively with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RBDEV_TARGET&lt;span style="color:#f92672"&gt;=&lt;/span&gt;a RBDEV_PREFIX&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/path/to/toolchain bash tools/rockboxdev.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then configure and build:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export PATH&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/path/to/toolchain/bin:&lt;/span&gt;$PATH&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;../tools/configure --target&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;29&lt;/span&gt; --type&lt;span style="color:#f92672"&gt;=&lt;/span&gt;B &lt;span style="color:#75715e"&gt;# bootloader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make -j&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;nproc&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;The bootloader is flashed via DFU, not written to disk.&lt;/strong&gt; Use &lt;code&gt;mks5lboot --bl-inst&lt;/code&gt; with
the iPod in DFU mode. The bootloader lives in NOR flash separately from the SD card, so
reformatting the SD card doesn&amp;rsquo;t affect it.&lt;/p&gt;
&lt;h2 id="summary"&gt;
Summary
&lt;a class="heading-link" href="#summary"&gt;
&lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
&lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re getting &amp;ldquo;No partition found&amp;rdquo; on an iPod Classic with iFlash and Rockbox on Linux:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the logical sector size with &lt;code&gt;cat /sys/block/sdX/queue/logical_block_size&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If it&amp;rsquo;s 4096, you&amp;rsquo;re in the wrong USB mode &amp;ndash; reboot into bootloader error mode&lt;/li&gt;
&lt;li&gt;If it&amp;rsquo;s 512, format with &lt;code&gt;sfdisk&lt;/code&gt; + &lt;code&gt;mkfs.vfat -F 32 -s 64&lt;/code&gt; and install Rockbox&lt;/li&gt;
&lt;li&gt;Reboot and enjoy your music&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>