Skip to main content

generate Ringtones.plist for custom iOS ring and alert tones

list custom tones in iOS settings by generating /Media/iTunes_Control/iTunes/Ringtones.plist

pip install ioscustomringtones

Instructions

  1. convert audio files to .m4a, then rename to .m4r:

    ffmpeg -i some_tone.wav some_tone.m4a
    mv some_tone.m4a some_tone.m4r
    
  2. mount the /Media/ directory of your iOS device to your local filesystem (this does not require a jailbroken device):

    mkdir ~/iPhone_Media/
    ifuse ~/iPhone_Media/
    
  3. copy your .m4r files to ~/iPhone_Media/iTunes_Control/Ringtones/:

    cp ~/Music/Ringtones/*.m4r ~/iPhone_Media/iTunes_Control/Ringtones/
    
  4. install ioscustomringtones with pip:

    pip install ioscustomringtones
    
  5. pass the directory you mounted to the write_ios_ringtones_plist command (see more options below):

    write_ios_ringtones_plist ~/iPhone_Media/
    
    Usage: write_ios_ringtones_plist [OPTIONS] MEDIA_DIRECTORY
    
      on a mounted iOS filesystem, reads existing `.m4r` files at
      `/Media/iTunes_Control/Ringtones/` and generates
      `/Media/iTunes_Control/iTunes/Ringtones.plist`
    
    Arguments:
      MEDIA_DIRECTORY  path to `/Media/` on the iOS device  [required]
    
    Options:
      --alerts-threshold INTEGER    number of seconds under which to
                                    assume sound is an alert tone vs a
                                    ringtone  [default: 10]
      --binary / --no-binary        whether to write `.plist` in binary
                                    format (as opposed to XML)  [default:
                                    binary]
      --write / --no-write          write to file; otherwise print to
                                    stdout  [default: write]
      --overwrite / --no-overwrite  write over an existing file
                                    [default: no-overwrite]
      --verbose / --no-verbose      print individual tones to stdout
                                    [default: no-verbose]
      --help                        Show this message and exit.
    
  6. unmount the /Media/ directory from your local filesystem:

    sudo umount ~/iPhone/
    

Metadata

Release files for ioscustomringtones 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ioscustomringtones 1.0.1
File Size Uploaded Provenance Actions
ioscustomringtones-1.0.1.tar.gz 16.5 kB Without provenance Details for ioscustomringtones-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ioscustomringtones 1.0.1
File Interpreter ABI Platform Actions
ioscustomringtones-1.0.1-py3-none-any.whl Python 3 none any Details for ioscustomringtones-1.0.1-py3-none-any.whl

Total release size: 32.3 kB

Release files / ioscustomringtones-1.0.1.tar.gz

Download URL ioscustomringtones-1.0.1.tar.gz
Size 16.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c7b316cd9aa1126622e5dc842d47f5a01898dc0f182817884676aae58f660019
BLAKE2b-256 checksum
How to use checksums
7d30d53f0ea754332d5ade11b40d97a7534f10a846ef67e5ab798f1e50200ec4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.7

Release files / ioscustomringtones-1.0.1-py3-none-any.whl

Download URL ioscustomringtones-1.0.1-py3-none-any.whl
Size 15.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c34316c37eade504ec7c7ff57388f19e81c541416738a303169ba3824641b2fb
BLAKE2b-256 checksum
How to use checksums
5793c0ba6912d8695d0fe3cb5bf96043fc687f5d6195775093fce3e9dc0fad92
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.7

Security for ioscustomringtones 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page