Läuft die Voice Acoustic VA-Remotecontrol (AllDSP AllControl) nativ unter Linux auf echtem wxGTK 3.0 — ohne Wine und ohne dekompilierten App-Code. Ausgeführt wird das unveränderte Python-2.7-Bytecode aus dem macOS-.app; C-Extensions (wxGTK/numpy/ scipy/PortAudio) kommen nativ aus Debian stretch. Enthält: va/ (Original-.pyc + pure-Python-Libs + Assets + launch.py mit den drei Linux-Fixes), Dockerfile/run.sh/entrypoint.sh, reference/ (dekompilierter Quellcode zum Debuggen) und README/STATUS. img.cache (378 MB, regenerierbar) ist per .gitignore ausgeschlossen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.2 KiB
4.2 KiB
VA-Remotecontrol — Reverse-Engineering-Notizen
Analyse der Voice_Acoustic_VA-Remotecontrol_64_bit_v_4_0_1 (Stand 08/2026).
Was ist das?
Ein Rebrand der AllDSP „AllControl" DSP-Software zur Fernsteuerung/Konfiguration der DSP-Verstärker (HDSP-Serie, Paveosub-…sp, Venia-…sp, PAV115sp usw.).
| Merkmal | Wert |
|---|---|
| Sprache | Python 2.6 (py2exe-Bundle, 32-bit) |
| GUI | wxPython / wxWidgets 2.8 (wx._core_.pyd, wxmsw28uh_*_vc.dll) |
| Numerik | numpy + scipy (FIR-Design, RTA-Messungen, PDF-Report) |
| Bootstrap-EXE | VA-Remotecontrol.exe (enthält angehängtes ZIP mit 904 .pyc) |
| MSVC-Runtime | VC++2008 / msvcr90 (nicht gebundlet → unter Wine vcrun2008) |
| Lizenz-Dongle | keiner (keyfile.py = statischer Preset-Encryption-Key) |
Ordner im Installat
src/— dekompilierter App-Quellcode (47 Module, s.u.) ← zum Analysierenpycode/— die 904 rohen.pyc(App + komplette Py2.6-Standardbibliothek)*.pyd,*.dll— native Extension-Module (numpy/scipy/wx/pywin32) + Python-Runtimefactory/— Werks-Presets/Firmware.ffije Produkt (HDSP-3/-6, Paveosub-112/115/118/218sp, Venia-8sp, PAV115sp-8K4 …)configurations/— DSP-Struktur-Definitionen.cfg+.csv(DPD2, DPCP88, DPD3 …)dfi/— Geräte-/Frontplatten-Layouts.dfi/.dfu/.dfeskins/— SVG-Bedienpanels (das UI wird aus SVGs aufgebaut, s.svg_panel.py)local/— Sprachdateien (deutsch, english, mandarin, nederlands, polish, portuguese, spanish, …)drivers/— Windows-USB-Treiberadspusb.inf/.cat
Modul-Landkarte (src/)
Einstieg
main.py→ ruftone_unit.main_application(argv).start()one_unit.py(3.7k Z.) — Haupt-App/Fenster;child_unit.py,select_unit*— Geräteauswahl/-instanzencountDSPs.py— zählt/erkennt angeschlossene DSPs
Kommunikation zu den Verstärkern (der interessante Teil)
d_protocol.py— Wire-Protokoll (nutztstruct,socket,myserial,zipfile)d_usb.py— findet USB-Geräte per WMI, Filter aufVID_0684(= AllDSP GmbH), mappt auf COM-Portd_ethernet.py— TCP/IP-Transport (socket)d_keepalive.py,d_bootloader.py— Verbindung halten / Firmware-Flashprotocol.py,server.py— höhere Protokoll-/Serverschichtnetwork_settings.py,network_graphical.py,network_customized.py— Multi-Device-Netz
Transport = USB-Seriell (virtueller COM-Port) ODER Ethernet. Kein FTDI-D2XX, sondern klassisch über COM (
myserial= pyserial-Wrapper).
GUI / DSP-Bedienung
svg_panel.py— rendert Bedienoberflächen aus SVGcontrol_panel.py,diagram.py(EQ/Filterkurven),my_menu.py,dialog.py,fir_dialog.py,MyOGLlike.py(OpenGL-Canvas)user_config_*.py— die einzelnen DSP-Blöcke:audio, dc, display, keys, leds, model, network, tcs, timer, various, vurta_measurements.py(Echtzeit-Analyzer, nutzt PortAudio/pyaudio),record.py,makePDF.py
Daten
data_model.py,definitions.py— Datenmodell / Konstanten (STRUCT_ID_GAIN/DELAY/LPF/HPF/PEQ/LIMITER/…)keyfile.py— nurpreset_encryption_key(Presets sind verschlüsselt; keine Lizenzprüfung)
Für Linux/Docker relevante Stolpersteine
- Crypto: Py2.6
random.seed()→os.urandom→ Windows-CryptoAPI. Im Wine-Prefix mussrsaenh.dllregistriert sein (regsvr32 rsaenh.dll), sonst Crash0x80090017. → ist im Docker-Image gefixt. - USB-Erkennung via WMI (
d_usb.ListUSBDevices,Win32_USBControllerDevice): funktioniert unter Wine praktisch nicht. → Gerät stattdessen als COM-Port durchreichen (/dev/ttyUSB0→dosdevices/com1) und in der App den COM-Port manuell wählen, oder die Ethernet-Anbindung nutzen (umgeht das USB/WMI-Problem komplett). - RTA-Messung braucht Audio-I/O (PortAudio) — im Container nur mit ALSA/Pulse-Durchreichung.
Wie der Quellcode entstand
.pycaus dem anVA-Remotecontrol.exeangehängten ZIP extrahiert.- Dekompiliert mit uncompyle6 (42 Module); die 5 komplexeren mit pycdc/Decompyle++ (Kopf-Kommentar „NOTE: mit pycdc…" → dort ggf. kleinere Ungenauigkeiten prüfen).