Clickwheel 0.1.1

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Clickwheel --version 0.1.1
                    
NuGet\Install-Package Clickwheel -Version 0.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Clickwheel" Version="0.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Clickwheel" Version="0.1.1" />
                    
Directory.Packages.props
<PackageReference Include="Clickwheel" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Clickwheel --version 0.1.1
                    
#r "nuget: Clickwheel, 0.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Clickwheel@0.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Clickwheel&version=0.1.1
                    
Install as a Cake Addin
#tool nuget:?package=Clickwheel&version=0.1.1
                    
Install as a Cake Tool

<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 NuGet

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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