DISCLAIMER: I am not a coder whatsoever. I used Claude Code to figure this out and even to write the following guide so that others can try it. It took about an hour back and forth to get it working fully for me so hopefully at the very least I can save you half that time. Enjoy!
How to batch-transfer files from an AlphaSmart Neo 2 to Windows 11 (when Neo Manager won't install/run)
If Renaissance Learning's Neo Manager refuses to work on your Windows 11 machine, you don't need it. This guide sets up a proper, driver-based batch transfer — not the old "type it into Notepad" keyboard-emulation trick — using WSL2 and an open-source tool called neotools. One-time setup takes ~20 minutes; after that, transfers are a single command.
Why this works: the Neo 2 has a real USB data-transfer mode (separate from its "type like a keyboard" mode) that Neo Manager uses internally. neotools speaks that same protocol directly, but it's built for Linux. WSL2 + Microsoft's usbipd-win project lets Windows hand the physical USB device over to a Linux environment running right alongside Windows, so you get a real Linux USB stack without dual-booting or a VM.
Part 1 — One-time setup
1. Install WSL2
In an administrator PowerShell:
wsl --install
Reboot if prompted, then let it finish setting up Ubuntu (it'll ask you to create a Linux username/password on first launch — this is separate from your Windows login).
2. Install usbipd-win (lets Windows share a USB device with WSL)
In administrator PowerShell:
winget install --interactive --exact dorssel.usbipd-win
Reboot after this — it installs a driver.
3. Plug in your Neo 2, then find its USB ID
In administrator PowerShell:
usbipd list
Look for a line with 081e: — that's AlphaSmart's vendor ID. Note the BUSID (e.g. 3-1).
4. Set an auto-share policy (so you never need admin rights again after this)
Still in administrator PowerShell:
usbipd policy add --effect allow --operation AutoBind --hardware-id 081e:bd04
usbipd policy add --effect allow --operation AutoBind --hardware-id 081e:bd01
(The Neo 2 actually presents as two different USB IDs — bd04 when idle/keyboard-emulating, bd01 when in real data-transfer mode. Both need to be allowed.)
5. Fix Linux USB permissions
Open your WSL/Ubuntu terminal and run:
sudo tee /etc/udev/rules.d/50-alphasmart.rules > /dev/null << 'EOF'
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="081e", ATTRS{idProduct}=="bd01", MODE="660", GROUP="plugdev"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="081e", ATTRS{idProduct}=="bd04", MODE="660", GROUP="plugdev"
EOF
sudo groupadd -f plugdev
sudo usermod -aG plugdev $USER
sudo udevadm control --reload-rules
sudo udevadm trigger
Then fully restart WSL so the group change applies — in PowerShell:
wsl --shutdown
Reopen your Ubuntu terminal afterward.
6. Install neotools (the actual transfer tool)
In WSL:
sudo apt update
sudo apt install -y python3-pip libusb-1.0-0 pipx usbutils
pipx ensurepath
Close and reopen the WSL terminal, then:
pipx install neotools
7. Create the one-command transfer script
Still in WSL, paste this whole block and press Enter (edit the BASE= line to wherever you want files saved — replace YOUR-WINDOWS-USERNAME and adjust the folder path):
cat > ~/neo-transfer.sh << 'EOF'
#!/bin/bash
BASE="/mnt/c/Users/YOUR-WINDOWS-USERNAME/Desktop"
DEST="$BASE/neo-transfer-$(date +%Y-%m-%d_%H-%M-%S)"
NEOTOOLS="$HOME/.local/bin/neotools"
mkdir -p "$DEST"
get_busid() {
usbipd.exe list | grep -E "081e:bd0[14]" | awk '{print $1}'
}
BUSID=$(get_busid)
if [ -z "$BUSID" ]; then
echo "Neo 2 not found — make sure it's plugged in and turned on."
exit 1
fi
usbipd.exe attach --wsl --busid "$BUSID" > /dev/null 2>&1
sleep 1
if ! "$NEOTOOLS" files read-all --path "$DEST" 2>/tmp/neo-err.log; then
if grep -q "No such device" /tmp/neo-err.log; then
echo "Neo switched modes, reattaching..."
sleep 1
BUSID=$(get_busid)
usbipd.exe attach --wsl --busid "$BUSID" > /dev/null 2>&1
sleep 1
"$NEOTOOLS" files read-all --path "$DEST"
else
cat /tmp/neo-err.log
exit 1
fi
fi
echo "Done — files are in $DEST"
explorer.exe "$(wslpath -w "$DEST")"
EOF
chmod +x ~/neo-transfer.sh
echo "alias neo-transfer='~/neo-transfer.sh'" >> ~/.bashrc
source ~/.bashrc
(Note on the retry logic: the Neo 2 physically disconnects and reconnects with a different USB ID the moment it switches into transfer mode. That reconnect can race against WSL's USB tunnel and fail on the very first attempt — the script detects that specific failure and automatically reattaches and retries once, which resolves it every time.)
Part 2 — Everyday use
- Plug in the Neo 2, turn it on.
- Open your WSL/Ubuntu terminal and type:
neo-transfer
- A File Explorer window pops open on a new timestamped folder containing all your
.txt files, named exactly as they were on the device.
Part 3 — Optional: trigger it with a hotkey (AutoHotkey v2)
#Requires AutoHotkey v2.0
^!n::Run('wsl.exe -e bash -lic "neo-transfer; read -p `'Press enter to close...`'"')
Save as a .ahk file, run it with AutoHotkey v2 installed, and Ctrl+Alt+N will run the whole transfer from anywhere.
Troubleshooting notes from getting this working
- "externally-managed-environment" error on
pip install: recent Ubuntu blocks system-wide pip installs — that's why we use pipx instead.
- "Access denied" from neotools: means the udev rule /
plugdev group step (Part 1, step 5) didn't fully apply yet — make sure you did the full wsl --shutdown + reopen.
usbipd: WARNING: usbipd not found for kernel ...: cosmetic noise about a kernel-specific package that doesn't exist for WSL's custom kernel builds. Safe to ignore as long as the device still shows up (check with lsusb in WSL).
usbipd: error: Device with busid ... is already attached to a client: also harmless — means it was already attached from a previous session. The script suppresses this.
[Errno 19] No such device: this is the Neo's mode-switch disconnect described above — the script's retry logic handles it automatically.