Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

FujiNet logo

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.

FujiNet Devices

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

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?

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:

  1. Run FujiNet-Flasher
  2. Select your platform
  3. Select firmware version
  4. 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

FujiNet Flasher

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).

  1. Create a new directory for the firmware files to reside and edit a new text file named release.json in that directory.

  2. Edit the release.json file 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"
        }
      ]
    }
    
  3. Using PlatformIO and VSCode, build the Firmware and Filesystem images

  4. Copy the firmware files (bootloader.bin, partitions.bin, firmware.bin and spiffs.bin) from fujinet-platformio/.pio/build/(target-platform)/ to the same directory with release.json

  5. Compress 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

DeviceStatusNotes

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

DeviceStatusNotes
C:
(Cassette)
Prototype WorkingLoad 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)
WorkingLoad floppy disk images from onboard MicroSD or networked TNFS server. Currently supports ATR and XEX. ATX in progress
N:
(Network)
Working / In ProgressNEW networking device. FujiNet configuration commands in place and working (WiFi, mounting, etc). TCP/UDP working. Handler in progress.
OtherSIO2BT 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)
WorkingPrinter 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)
Working850 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

DeviceStatusNotes

More Information

Coleco ADAM

Provided Devices

DeviceStatusNotes

More Information

Commodore C64/C128

Provided Devices

DeviceStatusNotes

More Information

PC - MS-DOS RS232

Provided Devices

DeviceStatusNotes

More Information

Tandy CoCo

Provided Devices

DeviceStatusNotes

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:

  1. From the File menu, select Import Appliance…

  2. Select the OVA file that was downloaded & click Next

    import-ova-1

  3. 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.

    import-ova-2

  4. 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

FujiNet Enhancement Proposals