Patsch v2.2.0 — Notizen & Bedienung
=====================================

FLASH-PROZEDUR (ohne CH343, Board eingebaut)
---------------------------------------------
1. Patsch-Button gedrückt halten (= GPIO0, externer Taster)
2. USB kurz trennen und wieder anstecken
3. Button loslassen
4. Flashen:

  arduino-cli compile --fqbn "esp32:esp32:esp32s3:UploadSpeed=921600,FlashMode=qio,
    LoopCore=1,EventsCore=1,USBMode=default,CDCOnBoot=cdc,PartitionScheme=huge_app,
    PSRAM=opi,DebugLevel=warn" patsch.ino

  stty -F /dev/ttyACM0 1200   (alternativ zum Button-Trick)

  esptool --chip esp32s3 -p /dev/ttyACM0 --before no-reset write-flash
    --flash-mode dio --flash-freq 80m --flash-size 4MB
    0x0      build/.../patsch.ino.bootloader.bin
    0x8000   build/.../patsch.ino.partitions.bin
    0xe000   build/.../boot_app0.bin
    0x10000  build/.../patsch.ino.bin

  Oder einfach: bash flash.sh s3devkit


SERIELLE KONSOLE (115200 Baud, /dev/ttyACM0)
---------------------------------------------
  help              diese Hilfe
  status            RAM, SD, Volume, aktueller Track
  reboot            ESP32 neu starten

  next              naechster Titel (identisch mit Button 1x kurz)
  prev              vorheriger Titel
  play <n>          Titel Nr. n abspielen (1-Tracks)
  play /dd/nnnn.mp3 Titel per Pfad abspielen
  pause             Pause / Weiter umschalten
  vol <0-21>        Lautstaerke setzen

  shuffle           Shuffle-Status (pos/verbleibend)
  shuffle list [n]  naechste n Tracks anzeigen (Default: 20)
  reshuffle         Shuffle-Liste sofort neu mischen

  index new /dd [p] neue index.csv aus allen .mp3 in /dd
  index restore N   index.csv aus Backup wiederherstellen
  index list        vorhandene Backups anzeigen
  history           History anzeigen
  cat history       history.csv ausgeben
  cat index         index.csv ausgeben

  ls [pfad]         Verzeichnis auflisten
  get <datei>       Datei als Base64 ausgeben
  put <datei>       Datei per Base64 hochladen
  rm <pfad>         Datei loeschen
  mkdir <pfad>      Verzeichnis anlegen

  usb on            SD-Karte als USB-Massenspeicher freigeben
  usb off           USB-Massenspeicher beenden

  output            aktuellen Ausgang anzeigen
  output i2s        Ausgang: I2S DAC (PCM5102A)
  output bt         Ausgang: Bluetooth (KCX_BT_EMIT)
  kcx pair          BT-Pairing ausloesen
  kcx link          BT-Verbindungsstatus
  kcx on/off        KCX Power


BUTTON-GESTEN
-------------
  1x kurz           naechster Titel
  2x kurz           vorheriger Titel (bis 50 zurueck)
  3x kurz           Pause / Weiter
  5x kurz           (reserviert)
  lang halten       Lautstaerke +/- (Richtung kehrt beim Loslassen um)
  beim Einschalten  Reshuffle (neue zufaellige Reihenfolge)


SHUFFLE
-------
  - Liste wird als /shuffle.csv auf der SD gespeichert (beim Reshuffle)
  - Position wird bei jedem Track in NVS gespeichert
  - Beim Boot: Liste von SD laden, Position aus NVS -> weiterspielen wo aufgehoert
  - Erstes Mal mit v2.2.0: einmal 'reshuffle' eingeben um /shuffle.csv anzulegen


SD-KARTE VORBEREITEN
--------------------
  # MP3s in DFPlayer-Struktur kopieren:
  bash rename_mp3.sh <quelle> <ziel> --run

  # Index erstellen:
  python3 make_index.py <pfad-zur-sd> --include <ordner>

  # Struktur: /01/0001.mp3 ... /99/9999.mp3
  # index.csv: /01/0001.mp3,,3  (Pfad,,Prioritaet 0-9)


Copyright (C) 2026 Ralf Burger (aka Wicki) -- GPL-3.0-or-later
https://rbag.eu/PATSCH/
