Skip to content
patausxPublic

About

reworked fork of ftpd with new features

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

PORTHAUL

PORTHAUL

wireless file haul for 3DS. an FTP server and client in one app — push and pull files between your console, phone, and PC over Wi-Fi. no cables, no card readers.

a reworked fork of ftpd by Michael Theall, Dave Murphy & TuxSH (GPLv3) — with an added FTP client, a touch file manager, QR connect, and a refreshed look.


what it does

  • SERVER — your phone / PC connect to the 3DS to drop or grab files (classic ftpd).
  • CLIENT — the 3DS connects out to another FTP server (phone / PC / NAS / another 3DS) to browse, download, and upload. runs on a background thread, so the UI never blocks.
  • 3DS ↔ 3DS — hit SCAN on the CLIENT tab and porthaul finds other consoles running porthaul on the same network (mDNS). tap one — connected. haul saves, backups, whatever, console to console. no PC in the middle.
  • CONNECT (QR) — point your phone camera at the on-screen QR to connect instantly.
  • FILE MANAGER — browse the SD card on the bottom screen by touch: open folders, new folder / rename / delete.

controls (3DS)

input action
L / R switch tabs (SERVER / CLIENT / CONNECT)
left stick scroll the log (top screen)
touch / stylus navigate lists, drag to scroll, tap fields to type
double-tap a folder open it
Y menu (Settings / About / Quit)
START exit

install

grab the latest release:

  • porthaul.cia (recommended) — drop it on your SD card, install with FBI. you get a home menu icon, banner, and the jingle.
  • porthaul.3dsx — put it in /3ds/, run from the Homebrew Launcher.

requires a console with CFW (Luma3DS). see 3ds.hacks.guide if yours isn't modded yet.

usage

3DS → 3DS

  1. both consoles: launch porthaul, same Wi-Fi.
  2. on one console, go to CLIENT and hit SCAN — the other console shows up as porthaul @ ip within a second. tap it.
  3. browse the other console's SD, DOWNLOAD what you want, or pick a local file on the SERVER tab and UPLOAD it. CANCEL aborts a connect / transfer any time.

Pull files from your phone → 3DS

  1. on the phone, start any FTP server app (e.g. "FTP Server", or CX File Explorer → network access). note its ip:port / user / pass.
  2. on the 3DS, switch to CLIENT (L/R), enter the host (no ftp://), port (often 2121, not 21), user & pass on the bottom screen, hit CONNECT.
  3. browse, select a file, DOWNLOAD (lands on sdmc:/). to send a file the other way, pick it on the SERVER tab's file list, then UPLOAD from the client.

Send files from your phone → 3DS

  1. on the 3DS, the SERVER tab is already serving.
  2. on the phone, open an FTP client, scan the CONNECT QR or type the IP, transfer.

build

Requires devkitPro with the 3DS toolchain and these portlibs: 3ds-zlib 3ds-curl 3ds-mbedtls 3ds-jansson 3ds-libzstd.

export DEVKITPRO=/opt/devkitpro DEVKITARM=/opt/devkitpro/devkitARM
export PATH=$DEVKITPRO/tools/bin:$DEVKITARM/bin:$PATH
cmake -B build -DCMAKE_TOOLCHAIN_FILE=$DEVKITPRO/cmake/3DS.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build -j4
# -> build/porthaul.3dsx

for a .cia, additionally grab makerom and bannertool:

cd build
bannertool makebanner -i ../meta/banner.png -a ../meta/audio.wav -o banner.bnr
bannertool makesmdh -s PORTHAUL -l "wireless file haul" -p filicide -i ../meta/icon.png -o icon.icn
sed 's|RootPath *: ../romfs|RootPath                : romfs|' ../meta/porthaul-cia.rsf > porthaul.rsf
makerom -f cia -o porthaul.cia -elf porthaul.elf -rsf porthaul.rsf -icon icon.icn -banner banner.bnr -exefslogo -target t

credits & license

PORTHAUL is GPLv3, inherited from ftpd. The FTP engine (RFC 959 / 3659), MODE Z, and the platform layers are by Michael Theall, Dave Murphy, and TuxSH. Bundled libraries (Dear ImGui, libcurl, zlib, mbedTLS, jansson, Nayuki qrcodegen) keep their own licenses — see the in-app About screen for full attribution.

About

reworked fork of ftpd with new features

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages