Welcome to FujiNet!
FujiNet is more than just a device, it’s a community! FujiNet brings vintage computer enthusiasts together through the power of the Internet by connecting computers to networks & providing a wealth of peripherals to interact with. While FujiNet is often best known for its ability to mount disks and other media over wireless networks, it also provides a collection of the most popular peripherals that vintage computer users would expect to work with their machines back in the day. From modems to printers, the FujiNet provides it all!
FujiNet Documentation
We welcome you to make the most of your FujiNet device(s) by providing extensive documentation covering both the functionality built-in to FujiNet as well as how enterprising developers can extend the device in innovative ways.
Join the Community
Get involved in the FujiNet community to learn even more or help us make FujiNet even better!
What is FujiNet?
FujiNet is an hardware device for older computer systems that do not have native solutions for participating on the modern Internet in order to load and manipulate software images and data for native applications. Its simplest use-case– it can load disk images for the supported platform from remote resources via local WiFi– it replaces actual floppy drives. It can also replace physical printers and modems. It can offload complex modern Internet protocols from the target platform (like HTTPS and JSON parsing) to allow local apps to treat network resources like native physical devices. It can also be used without networking to load disk images from its microSD card slot.

Updating Firmware
The FujiNet device is a constantly evolving piece of hardware that can be upgraded with new features by flashing with new firmware when it becomes available. The pages in this section will provide details on where to find the latest firmware upgrades as well as how to go about flashing the device.
FujiNet Flasher
Table of Contents
- Overview
- How to find out when a new firmware version is available?
- Install the USB Driver
- Installing Firmware with FujiNet Flasher
- Capturing Serial Debug Output
- Tips for flashing problems
- Flashing a custom firmware file
- Creating a custom firmware file
- App and Code Signing the Macintosh Flasher
Overview
Occasionally, new versions of the FujiNet firmware (the software that runs on the FujiNet device itself) are released. The main FujiNet website has a page dedicated to the FujiNet Flasher tool, located here: https://fujinet.online/download/
How to find out when a new firmware version is available?
- Run the FujiNet-Flasher, select your Platform, select the version at the top of the list and compare the version information displayed to what you have installed on your FujiNet device
- mozzwald’s FujiNet Firmware Update Information thread at AtariAge for ATARI
- Maybe also the FujiNet User’s Group on Facebook
- Follow some key FujiNet developers on Twitter
Install the USB Driver
Some computers may not detect the FujiNet when it is plugged in. You may need to install the USB to UART driver from Silicon Labs (manufacturer of the chip used in Fujinet). Download and install the appropriate driver for your system.
Installing Firmware with FujiNet Flasher
The FujiNet Flasher tool will download the latest firmware, and upload it to your #FujiNet device.
Important
The flash tool only supports FujiNet hardware with 8MB PSRAM and 16MB flash for ATARI. Coleco ADAM FujiNet has support for 8MB and 16MB flash.
Windows
Run with administrator privileges
macOS
(Details needed.)
Linux
Run as root, e.g. sudo ./FujiNet-Flasher. Alternatively, add your ‘regular’ user to the appropriate ‘group’ on your system. For example, if your #FujiNet, via micro-USB cable, appears on your system as the device /dev/ttyUSB0, check which group the device is part of.
ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Nov 14 11:10 /dev/ttyUSB0
Then, add your account to that group (in the example above, “dialout”):
sudo usermod -a -G dialout USERNAME
To access it immediately (no need to log out and back in) just run, e.g., newgrp dialout.
Now, you should be able to run ./FujiNet-Flasher without switching to root user, or running it under sudo.
Capturing Serial Debug Output
Debugging info from FujiNet can be captured using Fujinet-Flasher. This info may be requested by developers to aid in fixing bugs or troubleshooting hardware problems. These are the steps to capture this information:
- Connect FujiNet to a computer with a MicroUSB cable
- Run Fujinet-Flasher and select the the correct port used by Fujinet (ie, COM3 on Windows, /dev/ttyUSB0 on linux)
- Click the Serial Debug Output button in Fujinet-Flasher
- Press the RESET button on the FujiNet device (Button C, far right)
- Debug information will appear in the Fujinet-Flasher window
- Reproduce your problem with FujiNet then select all (CTRL-A) text in the box and copy it (CTRL-C)
- Paste the debug output to the developer requesting this information
- If using AtariAge forum, paste the information into a Spoiler box so the debug output does not fill up the thread
- Optionally, use a paste site such as our FujiNet PrivateBin and provide the URL
Tips for flashing problems
Some people have issues where the flasher just shows Connecting...---... or similar when trying to flash the FujiNet. Sometimes this can be caused by a poor quality USB cable and can be fixed by trying another. If the problem persists, you can also force the FujiNet into flashing mode by pressing and holding down the A Button during the entire flashing process. (More info about the flashing issue in this “espressif/esptool” bug report comment.)
A user has provided this process for Windows users having issues. The issue appears to be that some other app or program takes control of the serial port if you wait too long:
- Run FujiNet-Flasher
- Select your platform
- Select firmware version
- Turn on or plugin the FujiNet and quickly hit the Flash Firmware button
Flashing a custom firmware file
Sometimes the FujiNet development team may provide a custom firmware file (ZIP) to an end user for testing. This file can be flashed with FujiNet-Flasher. Previously, one had to run the flasher from the command line (FujiNet-Flasher /path/to/firmware.zip) to use a custom firmware file. The latest version has an option in the interface to select a local firmware file to flash.
Download the latest version at Fujinet Home

Creating a custom firmware file
A new script has been added to the fujinet-platformio repo that can be enabled in platformio.ini which will build a flashable firmware ZIP file. First, you must uncomment the post build script below (remove the semicolon at the beginning of the line):
extra_scripts =
pre:build_packages.py
pre:build_version.py
pre:build_webui.py
;post:build_firmwarezip.py ; Optional, build firmware ZIP file for flash tool
You can also optionally have the script rename the firmware file. By default the name is based on platform (your chosen hardware platform) and version number (from include/version.h). To change the name, uncomment the line below in platformio.ini and modify it to your needs:
; Override platform name when creating firmware ZIP file
; ex: fujinet-CUSTOMNAME-v1.0.zip
;platform_name = CUSTOMNAME
After saving the settings to platformio.ini, you must first run the Project Tasks Build Filesystem Image and then Build the firmware. If the build is successful, you will see a new firmware dir in the fujinet-platformio repo dir that contains the flashable ZIP file.
Note
Manual Firmware File Creation
Some users may wish to build their own firmware file for distribution (ie, custom hardware builds, special unsupported features, etc).
Create a new directory for the firmware files to reside and edit a new text file named
release.jsonin that directory.Edit the
release.jsonfile accordingly for your target board. For an 8MB variant board:{ "version": "NEW VERSION NUMBER", "version_date": "VERSION DATE/TIME, format: 2023-01-01 12:59:59", "build_date": "BUILD DATE/TIME, format: 2023-01-01 12:59:59", "description": "NOTES AND DESCRIPTION OF THE CHANGES", "git_commit": "GIT COMMIT HASH", "files": [ { "filename": "bootloader.bin", "offset": "0x1000" }, { "filename": "partitions.bin", "offset": "0x8000" }, { "filename": "firmware.bin", "offset": "0x10000" }, { "filename": "spiffs.bin", "offset": "0x600000" } ] }For a 16MB variant board:
{ "version": "NEW VERSION NUMBER", "version_date": "VERSION DATE/TIME, format: 2023-01-01 12:59:59", "build_date": "BUILD DATE/TIME, format: 2023-01-01 12:59:59", "description": "NOTES AND DESCRIPTION OF THE CHANGES", "git_commit": "GIT COMMIT HASH", "files": [ { "filename": "bootloader.bin", "offset": "0x1000" }, { "filename": "partitions.bin", "offset": "0x8000" }, { "filename": "firmware.bin", "offset": "0x10000" }, { "filename": "spiffs.bin", "offset": "0x910000" } ] }Using PlatformIO and VSCode, build the Firmware and Filesystem images
Copy the firmware files (
bootloader.bin,partitions.bin,firmware.binandspiffs.bin) fromfujinet-platformio/.pio/build/(target-platform)/to the same directory withrelease.jsonCompress the files into the root of a ZIP file (not in a subfolder) and provide it to the end user
App and Code Signing the Macintosh Flasher
In order to not have a modern Mac (OSX) refuse to allow you to run the Flasher.app when you first download and run it- it should be code signed and app notorized with Apple. This requires a paid apple Dev account.
Andy Diller has one and has signed the 10.5 release. Below are directions if anyone in the future or present would like to sign their own build for some reason. You would have already setup your Dev account, made a Team, created an app and app password.
Step 1
Get the Build Flasher.zip from Mozzwald. This is aleady in the right structure to sign and then zip back up. The commands below assume you have taken the zip from Moz and simply unzipped it into it’s own directory. Remove the original zip file as you will creating a new one.
Step 2
Follow the below commands. They should make some sense if you know what you are doing. If they do not make sense then ask a friend or use one that is already signed.
Commands
export SIGN_ID="Developer ID Application: YOUR NAME (YOUR ID)"
export APP_PATH="/Users/sjobs/flasher-sign/15/FujiNet-Flasher.app"
codesign --force --timestamp --options runtime --sign "$SIGN_ID" "$APP_PATH/Contents/MacOS/FujiNet-Flasher"
codesign --force --deep --options runtime --timestamp --sign "$SIGN_ID" "$APP_PATH"
codesign --verify --deep --strict --verbose=2 "$APP_PATH"
ditto -c -k --keepParent FujiNet-Flasher.app FujiNet-Flasher_v1.5.0_macos-10.15.zip
xcrun notarytool submit FujiNet-Flasher_v1.5.0_macos-10.15.zip \
--apple-id "YOUR_ID" \
--team-id "YOUR_TEAM_ID" \
--password "APP_PW_YOU_CREATED_FOR_TEAM" \
--wait
xcrun stapler staple "$APP_PATH"
spctl --assess --type exec --verbose=4 "$APP_PATH"
You are done. You can take that new ZIP and it should install on other’s Mac’s without requiring them to go into Pref/Security and “Run Anyway” etc. etc. etc…
Nightly Firmware Builds
Every night an automated GitHub Action is triggered to build the FujiNet Firmware for multiple platforms that are in a working state currently. If successful, the resulting firmware ZIP file is attached to a permanent special GitHub Pre-Release called Nightly Builds.
If you wish to try the bleeding edge current state of the fujinet-firmware code but don’t have a build environment of your own then this is the place to go! Download the appropriate file to your local computer & use the Fujinet Flasher tool to flash your FujiNet device with this custom-built ZIP file.
Warning
There is NO guarantee that these builds work!!
These builds are NOT official builds & are provided 100% AS-IS with absolutely no guarantee that they will work. Only use these builds if you know what you are doing & are willing to troubleshoot any problems on your own.
Of course reporting any bugs you run across would be greatly appreciated but they should be accompanied by console logs & any other appropriate details that might help in troubleshooting the issues. Generally the FujiNet Discord is the best place to discuss any issues you find in these builds.
Platform Overview
The following pages provide a very high-level overview of each of the various platforms supported by FujiNet. While FujiNet is a unified device striving to provide a consistent set of functionality, each platform has its own unique capabilities, strengths, & weaknesses. Review the pages in this section to understand what FujiNet features are currently supported for each platform.
Apple II/III
Provided Devices
| Device | Status | Notes |
|---|
More Information
Atari
In some cases, the devices FujiNet provides are meant to simulate real Atari peripherals, such as floppy disk drives (D: devices), RS232 and modem interfaces (R: devices), and more.
Utilizing the device’s Wi-Fi networking capabilities, it’s possible to connect to other devices on a local network or Internet, e.g. Bulletin Board Systems (BBSes) or other systems over Telnet, or even mounting floppy disk images from the “cloud”.
Provided Devices
| Device | Status | Notes |
|---|---|---|
| C: (Cassette) | Prototype Working | Load a CAS image (FUJI format) from MicroSD named test.cas. Write CAS file to MicroSD. Use browser to set PLAY or RECORD state. Short-press Button B to enable the C: device. Install a 10-kohm pulldown resistor on the MOTOR line. |
| D: (Disk) | Working | Load floppy disk images from onboard MicroSD or networked TNFS server. Currently supports ATR and XEX. ATX in progress |
| N: (Network) | Working / In Progress | NEW networking device. FujiNet configuration commands in place and working (WiFi, mounting, etc). TCP/UDP working. Handler in progress. |
| Other | SIO2BT Bluetooth Connection. Apetime Real Time Clock (NTP). SAM Text To Speech as a printer, voice output from #FujiNet to Atari. MIDIMaze network gaming. | |
| P: (Printer) | Working | Printer output saved to PDF files downloadable from the device. Available Printers: 820, 822, 825, 1020, 1025, 1027, 1029, Espon 80, Okimate 10, HTML for copy/paste, GRANTIC Screen Printer. |
| R: (Modem) | Working | 850 Modem emulation, supports Type 1 Poll to load handler. Works with existing communications programs such as Ice-T, BobTerm, AMODEM, PLATOTERM, and BBS servers. |
Since devices are handled via the Atari OS’s Central I/O (CIO) subsystem, practically any programming language on the Atari will be able to make use of these network features. For example, here’s a simple networked program in BASIC:
10 OPEN #1,12,0,"N:HTTP://WWW.GOOGLE.COM/"
20 DIM A$(1024):TRAP 100
30 INPUT #1,A$:PRINT A$:GOTO 30
100 CLOSE #1
On top of TLS and UDP, cryptographic protocols designed to provide communications security over computer networks, Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) respectively, are also a possibility, thanks to the computing horsepower of device powering FujiNet.
More information
The information from the “#FujiNet - a WIP SIO Network Adapter for the Atari 8-bit” thread on the AtariAge forums should all be covered here in the wiki, and/or on the FujiNet website. For now, visit that thread for more info.
Atari Lynx
Provided Devices
| Device | Status | Notes |
|---|
More Information
Coleco ADAM
Provided Devices
| Device | Status | Notes |
|---|
More Information
Commodore C64/C128
Provided Devices
| Device | Status | Notes |
|---|
More Information
PC - MS-DOS RS232
Provided Devices
| Device | Status | Notes |
|---|
More Information
Tandy CoCo
Provided Devices
| Device | Status | Notes |
|---|
More Information
Connecting the Device
The first step to using FujiNet is physically connecting it to the platform of your choosing. The pages in this section will cover specific instructions on how to physically attach & potentially power the FujiNet device to a given platform machine.
Apple II/III
Atari
Atari Lynx
Coleco ADAM
Commodore C64/C128
PC - MS-DOS RS232
Tandy CoCo
Using CONFIG
CONFIG is the main interface FujiNet provides to navigate storage hosts (eg, network shares) & mount media to the virtual “disk slots” the FujiNet uses to emulate attached storage on your platform. Each platform has unique ways of using storage & the pages that follow will provide instructions on how to enter & navigate the CONFIG interface to connect storage as desired.
Apple II/III
Atari
Atari Lynx
Coleco ADAM
Commodore C64/C128
PC - MS-DOS RS232
Tandy CoCo
Example Applications
One of the most exciting features of FujiNet is the powerful network connectivity it provides to vintage computer systems. There are a growing number of applications that FujiNet developers & community members have produces that take full advantage of the FujiNet functionality. This section presents a few of the most popular applications provided as examples for learning how to create your own applications.
cater
CP/M
ISS Tracker
netcat
News Reader
Weather
Example Games
FujiNet’s powerful networking capabilities are most famously used in creating feature-rich, cross-platform, networked games. These games allow for users across many platforms within the FujiNet community to play with each other over the Internet in fun & exciting ways! Included here are some of the most popular FujiNet-based games developed by FujiNet community members that can provide an excellent starting point for inventing your own contributions.
5 Card Stud
Battleship
Bouncy World!
Fujitzee
FujiNet Virtual Machine
Using the FujiNet VirtualMachine makes it possible to try out a FujiNet device on the following platforms without having to purchase any hardware:
- Atari
- Apple II
- Tandy CoCo
VM Features
The VM is built as a VirtualBox OVA appliance file which should be able to be importad into VirtualBox version 6 or 7. The VM includes the following functionality currently:
- Debian 12 Linux with the XFCE 4 desktop environment
- Altirra Atari emulator installed & run via Wine (Desktop Launcher)
- AppleWin Apple II emulator installed using native Linux port (Desktop Launcher)
- FujiNet PC for Atari plus netsio bridge emulator for connecting Altirra to the virtual FujiNet (starts automatically)
- FujiNet PC for Apple for connecting AppleWin to the virtual FujiNet (starts automatically)
- Epiphany web browser for connecting to the virtual FujiNet device’s web UI
- Download the VM
- The latest build of the VM can be downloaded here (~3.6GB file)
Importing the VM
The easiest way to import the OVA into VirtualBox is by using the GUI:
-
From the File menu, select Import Appliance…
-
Select the OVA file that was downloaded & click
Next
-
Optionally change the Machine Base Folder on the following page to where you’d like to store the imported VM. Most other items on this page are just informational & can be left as is.

-
Click Finish & wait for the VM to be imported
Once the VM has been imported the various settings can be customized to your liking. However, the VM should work without any modifications. If more memory is available it will make a noticeable performance difference to increase the VM’s allotted RAM as much as possible.
Additional Documentation
Official FujiNet VirtualMachine documentation is available with more in-depth help & usage information.
Theory of Operation
Creating a FujiNet Application
FujiNet-Lib
Command Reference
Command 1
Command 2
Command 3
Command Protocols
Apple II/III
Atari
Coleco ADAM
Commodore C64/C128
PC - MS-DOS RS232
Tandy CoCo
Introducing a New Platform
Building MSX Virtual Dev environment
As of Jan 2025 the current state of MSX Fujinet hardware is that you would need to build your own prototype hardware. What seems to be working for some is to take a blank MSX Cartridge card and a pico2 and wire it together. On the pico the Fujiversal firmware is reported to work against a USB connected pc instead of an ESP32. Then you can boot the fujinet-config msx rom on the MSX.
You can still work on developing software with OpenMSX by locally building OpenMSX. Once built you can enable the Fujinet extension in a slot which will boot the fujinet-config. The fujinet-lib for MSX is experimental, but functional.
For the latest, don’t forget to check the Discord MSX channel