Clickwheel 0.1.1
See the version list below for details.
dotnet add package Clickwheel --version 0.1.1
NuGet\Install-Package Clickwheel -Version 0.1.1
<PackageReference Include="Clickwheel" Version="0.1.1" />
<PackageVersion Include="Clickwheel" Version="0.1.1" />
<PackageReference Include="Clickwheel" />
paket add Clickwheel --version 0.1.1
#r "nuget: Clickwheel, 0.1.1"
#:package Clickwheel@0.1.1
#addin nuget:?package=Clickwheel&version=0.1.1
#tool nuget:?package=Clickwheel&version=0.1.1
<p align="center"> <img width="300" src="https://raw.githubusercontent.com/dstaley/clickwheel/main/clickwheel-wordmark-on-light.svg#gh-light-mode-only" /> <img width="300" src="https://raw.githubusercontent.com/dstaley/clickwheel/main/clickwheel-wordmark-on-dark.svg#gh-dark-mode-only" /> </p>
Clickwheel is a modern cross-platform iPod management API for .NET.
Installing
Clickwheel is available via NuGet.
| Package Name | Version (NuGet) |
|---|---|
Clickwheel |
Usage
using Clickwheel;
var ipod = IPod.GetConnectedIPod();
var track = new NewTrack
{
FilePath = "01 Run Away With Me.m4a",
Album = "E•MO•TION",
Artist = "Carly Rae Jepsen",
AlbumArtist = "Carly Rae Jepsen",
Title = "Run Away With Me",
IsVideo = false,
ArtworkFile = "album.jpg",
Year = 2015,
DiscNumber = 1,
TotalDiscCount = 1,
TrackNumber = 1,
AlbumTrackCount = 12,
Genre = "Pop",
};
var addedTrack = ipod.Tracks.Add(track);
addedTrack.Rating = new IPodRating(5);
var playlist = ipod.Playlists.Add("National Anthems");
playlist.AddTrack(addedTrack);
// Write changes to iPod
ipod.SaveChanges();
Compatibility
| Family | Generation | Supported | Supported Firmware Version |
|---|---|---|---|
| iPod | 1st | Supported | |
| 2nd | Supported | ||
| 3rd | Supported | ||
| 4th | Supported | 3.1.1 (Monochrome), 1.2.1 (Color) | |
| 5th | Supported | 1.3 | |
| 6th | Supported | 1.1.2 | |
| iPod mini | 1st | Supported | |
| 2nd | Supported | 1.4.1 | |
| iPod nano | 1st | Supported | 1.3.1 |
| 2nd | Supported | 1.1.3 | |
| 3rd | Supported | 1.1.3 | |
| 4th | Supported | 1.0.4 | |
| 5th | Supported | 1.0.2 | |
| 6th | Not Supported[^1] | ||
| 7th | Not Supported[^1] | ||
| iPod shuffle | 1st | Supported | 1.1.5 |
| 2nd | Supported | 1.0.4 | |
| 3rd | Not Supported[^2] | ||
| 4th | Not Supported[^2] | ||
| iPod touch | All | Not Supported[^3] |
[^1]: Uses HashAB [^2]: VoiceOver generation currently unsupported [^3]: Clickwheel doesn't support iOS devices
Extended SysInfo
iPods that support album artwork store some additional system attributes which are accessible via either a SCSI INQUIRY command or a USB Control Transfer (starting with the 6th generation iPod, the 3rd generation iPod nano, and the 3rd generation iPod shuffle). Clickwheel requires this data to be present in a file named SysInfoExtended in the iPod's iPod_Control/Device folder for proper album artwork support and database hashing. How this file is created depends on your operating system.
Windows
On Windows, you can use Clickwheel Device Helper to create the SysInfoExtended file for all attached iPods.
Linux
On Linux, you can use ipod-read-sysinfo-extended to obtain the SysInfoExtended file. This command is provided by the following packages:
| Distro | Package |
|---|---|
| Arch | libgpod |
| Debian/Ubuntu | libgpod4 |
| Fedora | libgpod |
| openSUSE | libgpod-tools |
macOS
Unfortunately, modern versions of macOS do not support issuing SCSI INQUIRY requests to attached USB devices from userspace. If you're using an iPod that supports retrieving the extended SysInfo via a USB Control Transfer (any iPod released in 2007 or later), you can use this program to write the SysInfoExtended file. Otherwise, you'll need to use a Windows or Linux device.
HashAB
HashAB is the name given to the as-of-yet unbroken database hashing scheme used on the 6th and 7th generation iPod nanos. Clickwheel does not support devices that use HashAB.
Acknowledgements
Clickwheel is a modern update of sharepod-lib, originally written by Jeffrey Harris.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net7.0
- Microsoft.Data.Sqlite (>= 6.0.4)
- SixLabors.ImageSharp (>= 2.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.2-canary.f4027cf | 87 | 11/30/2024 |
| 0.1.2-canary.ed4bf7b | 59 | 5/10/2025 |
| 0.1.2-canary.0239f38 | 54 | 5/10/2025 |
| 0.1.1 | 191 | 11/20/2024 |
| 0.1.1-canary.14ae360 | 75 | 11/30/2024 |
| 0.1.0 | 500 | 1/2/2023 |