Firmware

move-network

Hype41/100

move-network is custom firmware for the Ableton Move, by @rgeissen. Open source under MIT.

forAbleton Move·by@rgeissen

Unclaimed. Is this yours? Sign in with GitHub as @rgeissen to claim it.

Downloads
0
Stars
0
Forks
0
Commits
3
Last commit
Get the source

No release files yet. Build from source.

MIT· rgeissen/move-network·downloads come from the creator’s GitHub releases

3
Commits
0
Releases
3 commits and 0 releases in the last year
Activity · last 12 months

Ableton Move NFS Sample Sharing

Mount your Ableton sample library from an NFS server to your Ableton Move device for live network access. Zero storage used on Move -- samples are streamed over the local network.

Overview

This project provides two workflows:

  1. Install / Uninstall -- One-time (or post-firmware-update) setup that installs NFS tools on the Move and configures auto-mount on boot.
  2. Mount / Unmount -- Day-to-day scripts for manually mounting or unmounting the NFS share without modifying the Move's system files.

Both workflows connect to:

  • NFS Server (e.g., 192.168.0.100) -- Source of samples
  • Ableton Move (move.local) -- Target device

Prerequisites

  • Python 3.7+
  • SSH access to both NFS server and Ableton Move
  • Both devices on the same local network
  • NFS server with NFS service enabled (Synology, FreeNAS, Linux, etc.)

Setup

# Install Python dependencies
pip install -r requirements.txt

# Create environment file from template
cp .env.example .env

# Edit .env with your credentials
nano .env

Then configure your NFS server to export the samples directory. See the NFS Server Configuration section below.

Edit config/settings.yaml to match your network (server IP, share path, mount point).


Workflow 1: Install / Uninstall (Persistent Setup)

The install script sets up everything on the Move so that samples auto-mount on every boot. Run this once after initial setup, and again after any firmware update or factory reset.

# Auto mode (recommended): uninstalls previous config if present, then installs fresh
python scripts/install_move_nfs.py auto

# Install only (fails if already installed)
python scripts/install_move_nfs.py install

# Uninstall -- removes all NFS configuration from Move
python scripts/install_move_nfs.py deinstall

You can override configuration with command-line parameters:

python scripts/install_move_nfs.py auto \
  --nfs-server 192.168.1.100 \
  --nfs-share /volume1/samples \
  --mount-point /data/Music

What the install script does:

  • Downloads and installs the mount.nfs binary on Move
  • Backs up /etc/fstab and adds an NFS auto-mount entry
  • Creates the mount point directory
  • Tests that the mount works
  • Installs a delayed-mount init script to handle boot race conditions

After installation, samples auto-mount on every boot and gracefully skip mounting if the network is unavailable (nofail option).

See INSTALLATION.md for full details, manual steps, and troubleshooting.


Workflow 2: Mount / Unmount (Manual)

Use these scripts for one-off mounting without modifying system files on the Move. Useful for testing, or if you prefer not to use auto-mount.

Mount Samples

python scripts/mount_samples.py

Samples become accessible on the Move at:

/data/UserData/UserLibrary/Samples/SamplesExternal

Unmount Samples

python scripts/unmount_samples.py

Check Status

# Check NFS server status and exports
python scripts/check_nfs_status.py

# Comprehensive verification (NFS exports, mount status, read access, write protection)
python scripts/verify_mount.py

NFS Server Configuration

Configure your NFS server to export the samples directory:

  1. Access your NFS server's management interface
  2. Enable the NFS service if not already enabled
  3. Create or configure an NFS export for your samples directory
  4. Set the export permissions:
    • Client: move.local (or specific IP of Move)
    • Access: Read only
    • User mapping: Map to appropriate user (e.g., admin, nobody)
    • Security: sys (or krb5 if using Kerberos)
    • Options: Enable asynchronous writes, allow non-privileged ports
  5. Apply the configuration

Specific steps vary by NFS server (Synology DSM, FreeNAS, Linux /etc/exports, etc.). Consult your server's documentation.

Verify NFS Configuration

python scripts/check_nfs_status.py

This verifies that the NFS daemon is running, your samples directory is exported, and the directory exists and is accessible.


Configuration

config/settings.yaml

nfs_server:
  hostname: "192.168.0.100"      # NFS server IP address
  ssh_port: 22                    # NFS server SSH port
  ssh_user: "admin"               # NFS server SSH username
  share_path: "/volume2/homes/admin/Drive/10 - ABLETON/User Library/Samples"

move:
  hostname: "move.local"          # Move hostname
  username: "ableton"             # Move username
  root_username: "root"           # Move root username (required for mounting)
  mount_point: "/data/UserData/UserLibrary/Samples/SamplesExternal"
  ssh_port: 22                    # Move SSH port

nfs:
  version: 3                      # NFS version (3 or 4)
  options: "ro,nolock,soft,timeo=15,retrans=1,nofail"
  read_only: true

.env

Credentials file (create from .env.example):

# NFS Server credentials
NFS_SERVER_SSH_PASSWORD=your_nfs_server_password

# Move credentials
MOVE_SSH_PASSWORD=your_move_password
MOVE_ROOT_PASSWORD=your_move_root_password

# Or use SSH keys (recommended):
# NFS_SERVER_SSH_KEY_PATH=/path/to/nfs_server/key
# MOVE_SSH_KEY_PATH=/path/to/move/key

The .env file is gitignored to protect your credentials.


Troubleshooting

"Permission denied" on mount

  1. Check NFS server export permissions allow the Move's IP or hostname
  2. Verify with: python scripts/check_nfs_status.py
  3. Ensure "Allow connections from non-privileged ports" is enabled on your NFS server

"No route to host"

  1. Verify both devices are on the same network
  2. Test connectivity: ping <nfs-server-ip> from your Mac
  3. Check NFS server firewall allows NFS (port 2049)

"Mount point appears empty"

  1. Verify NFS export: ssh -p <port> <user>@<nfs-server-ip> "showmount -e localhost"
  2. Check the share path in config/settings.yaml
  3. Ensure NFS service is enabled on your NFS server

"Connection refused" to Move

  1. Test SSH manually: ssh ableton@move.local
  2. Verify credentials in .env file
  3. Check Move is powered on and on network

"Stale file handle"

NFS server was restarted while mounted. Force unmount and remount:

python scripts/unmount_samples.py
python scripts/mount_samples.py

Samples not mounting after reboot

See INSTALLATION.md - Troubleshooting for install-specific issues (missing mount.nfs, fstab problems, download failures).


Manual Commands

If you prefer direct SSH control:

# Check NFS server exports
ssh -p <port> <user>@<nfs-server-ip> "showmount -e localhost"

# Mount on Move
ssh root@move.local 'mkdir -p /data/UserData/UserLibrary/Samples/SamplesExternal'
ssh root@move.local 'mount -t nfs -o ro,nolock,nfsvers=3 <nfs-server-ip>:"<share-path>" /data/UserData/UserLibrary/Samples/SamplesExternal'

# Check mount status
ssh ableton@move.local "mount | grep SamplesExternal"

# Unmount
ssh root@move.local "umount /data/UserData/UserLibrary/Samples/SamplesExternal"

Project Structure

move-network/
├── README.md                   # This file
├── INSTALLATION.md             # Install/uninstall guide (automated + manual)
├── requirements.txt            # Python dependencies
├── .env.example                # Environment template
├── .gitignore                  # Git ignore rules
├── config/
│   └── settings.yaml           # Main configuration
├── scripts/
│   ├── install_move_nfs.py     # Install/uninstall NFS on Move (persistent)
│   ├── mount_samples.py        # Mount samples on Move (manual)
│   ├── unmount_samples.py      # Unmount samples from Move
│   ├── verify_mount.py         # Verify mount status and connectivity
│   ├── check_nfs_status.py     # Check NFS server status
│   └── setup_automount.py      # Configure auto-mount via fstab
└── utils/
    ├── ssh_helper.py            # SSH connection utilities
    └── move_helper.py           # Move device helper functions

Security Notes

  • Read-only enforcement: Samples are mounted read-only to prevent accidental modification
  • Network restrictions: NFS export should be limited to Move's IP address
  • Local network only: Never expose NFS to the internet
  • SSH keys: Use SSH keys instead of passwords for automation (more secure)
  • Credentials: .env file is gitignored to avoid committing secrets

FAQ

Q: Can I modify samples on the Move? A: No, the mount is read-only for safety.

Q: Will this use storage on the Move? A: No. Files are streamed from the NFS server as needed.

Q: What happens if the network drops? A: With soft mount options, operations timeout gracefully. Unmount and remount to recover.

Q: What happens if the Move boots without network? A: With the nofail mount option, boot continues normally. Mount manually once the network is available.

Q: Can I use this with multiple Move devices? A: Yes, add each Move's IP to the NFS server's export permissions and run the install on each device.

Q: Does this work over the internet? A: No. This is designed for local network use only. NFS should never be exposed to the internet.

Q: What do I do after a firmware update? A: Run python scripts/install_move_nfs.py auto to reinstall. See INSTALLATION.md.

Further Documentation

  • INSTALLATION.md -- Automated and manual install/uninstall, fstab reference, NFS server setup, firmware update recovery, troubleshooting

License

This project is licensed under the MIT License - see the LICENSE file for details.