Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
あのころの iPod を どうにか再生させたい
Search
orumin
August 09, 2025
Programming
3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
あのころの iPod を どうにか再生させたい
Kernel/VM勉強会@東京 #18
orumin
August 09, 2025
More Decks by orumin
See All by orumin
ヴィンテージマシンと付き合う - kernel/vm online 5
orumin
0
1.3k
むかしの RISC、むかしの Unix
orumin
7
3.9k
Fundamental of architecture to implementing OS on AArch64
orumin
3
5.7k
Kernel/VM Kansai #9
orumin
0
1k
Kernel/VM #14 発表資料
orumin
1
650
Unikernels report
orumin
2
550
第13回Kernel/VM勉強会発表資料
orumin
1
1.7k
第12回カーネル/VM探検隊
orumin
0
400
第11回 Kernel/VM探検隊 発表資料
orumin
1
610
Other Decks in Programming
See All in Programming
What We Talk About When We Talk About XP
m_seki
2
670
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.3k
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.9k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.2k
Family mrubyの進捗
kishima
1
130
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
130
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
330
Java 27新機能 / Java 27 new features
kishida
2
160
Security issues being discussed on Web Platforms
petamoriken
0
1k
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
730
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.7k
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
300
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
510
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Writing Fast Ruby
sferik
630
63k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
900
Making the Leap to Tech Lead
cromwellryan
135
10k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Transcript
あのころの iPod を どうにか再生させたい kernel/vm 勉強会@東京 #18 @orumin 2025-08-09
Self-introduce • orumin です • 組み込みっぽい領域の R&D とか開発とか ‣ 浅瀬ぱちゃぱちゃしてます
@orumin あのころの iPod を 2025-08-09 1 / 32
Previous story @orumin あのころの iPod を 2025-08-09 2 / 32
Previous story @orumin あのころの iPod を 2025-08-09 3 / 32
Previous story • 前回 ‣ 古い iPod の SSD/SD 化のご紹介
‣ Rockbox のご紹介 ‣ memmap、パーティション構成 @orumin あのころの iPod を 2025-08-09 4 / 32
Goal • OSOS パーティションに適当なコードを置いて自作 OS @orumin あのころの iPod を 2025-08-09
5 / 32
Goal • OSOS パーティションに適当なコードを置いて自作 OS @orumin あのころの iPod を 2025-08-09
6 / 32
Brand new exploit(s) • WInd3x, the iPod Bootrom exploit 10
years too late ‣ 2023 年 10 月 • S5Late ‣ 2024 年 12 月 → (Goal)これを糸口に簡単 iPod プログラミング環境を構築・提供 したい @orumin あのころの iPod を 2025-08-09 7 / 32
wInd3x • q3k 氏の発見した exploit • iPod nano4G 以降で利用できる ‣
iPod nano3G 以前は Pwnage 2.0 が使える @orumin あのころの iPod を 2025-08-09 8 / 32
wInd3x - iPod boot (usual) BootROM 2nd stg loader(NAND/NOR) OS(NAND)
disk mode(NAND) Diag(NAND) @orumin あのころの iPod を 2025-08-09 9 / 32
wInd3x - iPod boot (usual) • IMG1 と呼ばれるフォーマットのイメージが使われ、DER エン コードの
ASN.1/X.509 署名がされている ‣ DER パーサーがバグっている (Pwnage 2.0) @orumin あのころの iPod を 2025-08-09 10 / 32
wInd3x - iPod boot (WTF/DFU) BootROM WTF/DFU recovery disk mode
@orumin あのころの iPod を 2025-08-09 11 / 32
wInd3x - iPod boot (WTF/DFU) • USB stack(BootROM) <-packet-> DFU
mode ‣ iPod は OTG も対応 • USB device reqbmRequestType & 0x60 == 0x20 or 0x40 ‣ class or vendor のハンドル ‣ ハンドリング中、bmRequestType & 0x3 == 0 で wIndex の境界チェック が抜けている • bmRequest==0x20 && wIndex=3 で BootROM の 0x000~0x600 を任意に実行 ‣ 0x3b0 にちょうど便利な blx r0 が居る ‣ SETUP パケットをそのままバイナリコードとして実行させられる @orumin あのころの iPod を 2025-08-09 12 / 32
wInd3x git clone https://github.com/freemyipod/wInd3x cd wInd3x go build ./cmd/wInd3x ./wInd3x
@orumin あのころの iPod を 2025-08-09 13 / 32
wInd3x • ROM flash せずとも gadget 送ったり ROM を decrypt
したりでき る、べんり! • Hello, world 的なものを簡単に準備できる SDK っぽいものを準備 すればイケる! • 勝った! @orumin あのころの iPod を 2025-08-09 14 / 32
Trouble 1 @orumin あのころの iPod を 2025-08-09 15 / 32
Trouble 1 • Gentoo Linux の kernel config 足りてなかった @orumin
あのころの iPod を 2025-08-09 15 / 32
Trouble 2 • iPod のバッテリー死にかけ 💀 @orumin あのころの iPod を
2025-08-09 16 / 32
Trouble 2 • iPod のバッテリー死にかけ 💀 • とりあえず 30pin ケーブルつないでる間だけは
boot する @orumin あのころの iPod を 2025-08-09 16 / 32
Trouble 3 謎の libusb1.0 エラー! • wInd3x で DFU exploit
まで成功する • バイナリ投げて実行させたた途端、一生 I/O エラーが出る ‣ もはや自宅のマシンの H/W の問題な気がする 雑な見積りで直前にやるのをやめよう @orumin あのころの iPod を 2025-08-09 17 / 32
Appendix • iPod と UEFI の関係 ‣ 2nd stage loader
はなぜか EFI の ESP と driver らしきものが流用 されているらしい ‣ 案外モダン ‣ たしかに iPod nano 4G は 2008 とかなので EFI 1.x 採用の Intel Mac と時期が前後する • RTXC ‣ 元 Apple の Paul Mercer 氏が建てた Pixo の Pixo OS が retail OS らしい ‣ コアに Quadros の RTOS、RTXC が使われているのだとか @orumin あのころの iPod を 2025-08-09 18 / 32
Future work • 次回の関西か東京ではまともな Linux マシン用意して iPod 実機 デモをお見せできるよう頑張ります ‣
一応バイナリはできた(動作未確認) ‣ USB コントローラが壊れてないまともマシンなら問題ないと 信じています @orumin あのころの iPod を 2025-08-09 19 / 32
惨状 @orumin あのころの iPod を 2025-08-09 20 / 32
惨状 • 前回からいろいろ iPod 増やしました • PortalPlayer PP5021C・Samsung S5L8702 (Armv4T)、S5L8720、
S5L830 (Armv6) @orumin あのころの iPod を 2025-08-09 21 / 32
こぼれ話 • 30p ケーブルいつのまにか紛失してたんですが、ヨドバシにまだ 在庫売ってた @orumin あのころの iPod を 2025-08-09
22 / 32
こぼれ話 • 一部液晶が破損・表示欠損していたはずの iPod Classic が久々に 起動したら特に欠けなく表示されていた @orumin あのころの iPod
を 2025-08-09 23 / 32
こぼれ話 • 朝なんとかエラー解決できないかと考えながら家をうろうろし てたら、いつ買ったか覚えのない iPod nano 4G/5G が本棚から出 てきた @orumin
あのころの iPod を 2025-08-09 24 / 32
Info CP15 ---- ID code: 0x410fb764 Implementer: ARM Variant: 0x0
Architecture: See CPUID Part number: b76, Revision: 4 Extra Junk: CP15 c0,c0,0 (Main ID): 410fb764 CP15 c0,c0,1 (Cache Type): 1d152152 CP15 c0,c0,2 (TCM Status): 00000000 CP15 c0,c0,3 (TLB Type): 00000800 CP15 c0,c1,0 (Processor Feature 0): 00000111 CP15 c0,c1,1 (Processor Feature 1): 00000011 @orumin あのころの iPod を 2025-08-09 25 / 32
Info CP15 c0,c1,2 (Debug Feature 0): 00000033 CP15 c0,c1,3 (Auxiliary
Feature 0): 00000000 CP15 c0,c1,4 (Memory Model Feature 0): 01130003 CP15 c0,c1,5 (Memory Model Feature 1): 10030302 CP15 c0,c1,6 (Memory Model Feature 2): 01222100 CP15 c0,c1,7 (Memory Model Feature 3): 00000000 CP15 c0,c2,0 (Instruction Set Feature Attribute 0): 00140011 CP15 c0,c2,1 (Instruction Set Feature Attribute 1): 12002111 CP15 c0,c2,2 (Instruction Set Feature Attribute 2): 11231121 CP15 c0,c2,3 (Instruction Set Feature Attribute 3): 01102131 @orumin あのころの iPod を 2025-08-09 26 / 32
Info CP15 c0,c2,4 (Instruction Set Feature Attribute 4): 00001141 CP15
c0,c2,5 (Instruction Set Feature Attribute 5): 00000000 CP15 c1,c0,0 (Control): 00450078 CP15 c1,c0,1 (Auxiliary Control): 00000007 CP15 c1,c0,2 (Coprocessor Access Control): 00000000 CP15 c1,c1,0 (Secure Configuration): 00000000 CP15 c1,c1,1 (Secure Debug Enable): 00000000 CP15 c1,c1,2 (Non-Secure Access Control): 00000000 CP15 c2,c0,0 (Translation Table Base 0): 00000000 CP15 c2,c0,1 (Translation Table Base 1): 00000000 CP15 c2,c0,2 (Translation Table Base Control): 00000000 CP15 c3,c0,0 (Domain Access Control): 00000000 @orumin あのころの iPod を 2025-08-09 27 / 32
Info CP15 c7,c4,0 (PCA): 00000000 CP15 c7,c10,6 (Cache Dirty Status):
00000000 CP15 c9,c0,0 (Data Cache Lockdown): fffffff0 CP15 c9,c0,1 (Instruction Cache Lockdown): fffffff0 CP15 c9,c1,0 (Data TCM Region): 00000000 CP15 c9,c1,1 (Instruction TCM Region): 00000000 CP15 c9,c1,2 (Data TCM Non-secure Control Access): 00000000 CP15 c9,c1,3 (Instruction TCM Non-secure Control Access): 00000000 CP15 c9,c2,0 (TCM Selection): 00000000 CP15 c9,c8,0 (Cache Behavior Override): 00000000 CP14 (debug) ---- @orumin あのころの iPod を 2025-08-09 28 / 32
Info DIDR: 0x15121004 DSCR: 0x00000002 SysCfg ------ Failed to read
syscfg: unimplemented CHIPID ------ CID_VALID: 00000001 CHIPIDL: 19000011 CHIPIDH: 8730000b DIEIDL: 8eb9f8d0 DIEIDH: 00000175 @orumin あのころの iPod を 2025-08-09 29 / 32
Info ECID_VERSION: 00000004 GPIO ---- 01234567 GPIO 000-007: state: HHHHH_HH
dir: iiiiiiii GPIO 008-015: state: HHHHHH_H dir: iiiiiiii GPIO 016-023: state: HHHHHHHH dir: iiiiiiii GPIO 024-031: state: HHHHHHHH dir: iiiiiiii GPIO 032-039: state: HHHHHHHH @orumin あのころの iPod を 2025-08-09 30 / 32
Info dir: iiiiiiii GPIO 040-047: state: HHHHHHH_ dir: iiiiiiii GPIO
048-055: state: _____HHH dir: iiiiiiii GPIO 056-063: state: H_______ dir: iiiiiiii GPIO 064-071: state: _HHHHHH_ dir: iiiiiiii GPIO 072-079: state: _H___HH_ dir: iiiiiiii GPIO 080-087: state: HH_H_HH_ dir: iiiiiiii GPIO 088-095: state: ____H_HH @orumin あのころの iPod を 2025-08-09 31 / 32
Info dir: iiiiiiii GPIO 096-103: state: HHHHHHHH dir: iiiOiiii GPIO
104-111: state: HHHHHHHH dir: iiiiiiii GPIO 112-119: state: HHHH__HH dir: iiiiiiii GPIO 120-127: state: HHHHHHHH dir: iiiiiiii @orumin あのころの iPod を 2025-08-09 32 / 32