Repository navigation
Neptune v6.3
Pre-releaseRelease notes - Neptune 6.3
Everything in this archive - neptune.library, all 30 class drivers, Neptune USB, USBEject
and the command-line tools - reports version 6.3, followed by the CPU it was built
for.
Upgrading from 6.2: run the installer; it replaces the old installation and your
settings are imported (see below).
Poseidon for AmigaOS is now Neptune
At the request of the AROS Development Team, this project no longer presents itself
as Poseidon. From 6.3 it is Neptune - an incompatible fork of the Poseidon USB stack.
Neptune is not compatible with Poseidon:
- Poseidon's classes and tools (the 4.x and AROS 5.x lines) do not run on Neptune, and
Neptune's do not run on Poseidon. - Host-controller drivers written for Poseidon's V3 host-controller interface are not
supported. Neptune speaks the classic V1/V2 interface and its own context interface; the
context interface is not part of Poseidon's API.
What changed names:
| 6.0-6.2 | 6.3 | |
|---|---|---|
| Library | LIBS:poseidon.library |
LIBS:neptune.library |
| Class drivers | SYS:Classes/USB/<name>.class |
DEVS:USBClasses/<name>.usbclass |
| Control panel | SYS:Prefs/Trident |
SYS:Prefs/NeptuneUSB ("Neptune USB") |
| Commands | PsdStackLoader, PsdDevLister, PsdErrorlog |
USBStart, USBList, USBErrorlog |
AddUSBHardware, AddUSBClasses |
USBAddHardware, USBAddClasses |
|
| Optional tools | DRadioTool, PencamTool, PowManTool, RocketTool, SonixcamTool, UPSTool |
USBRadio, USBPencam, USBPowMan, USBRocket, USBSonixcam, USBUPS |
| Settings | ENV(ARC):Sys/poseidon.prefs |
ENV(ARC):Sys/neptune.prefs |
| Sounds | SYS:Prefs/Presets/Poseidon/ |
SYS:Prefs/Presets/Neptune/ |
| Device popups | "Poseidon Popups" (PoPo) | "USB device notifications" |
| Settings-file datatype | PSD |
Neptune |
| Archive | Poseidon-<ver>-<cpu>.lha |
Neptune-<ver>-<cpu>.lha |
Every Neptune command now starts with USB, and every class driver ends in .usbclass, so
installing Neptune no longer replaces a Poseidon 4.x command, tool or class, and neither stack
can pick up the other's classes.
One USB stack at a time: Neptune does not start its USB controllers while Poseidon is
loaded. USBStart and USBAddHardware say why and stop, and so does Neptune USB in its log;
reboot without Poseidon. A Neptune class whose device
(usbscsi.device, usbparallel.device, ...) another USB stack already provides does not
start, and the log says so.
What the installer does:
- It disables the
Poseidon USB Stackblock inS:User-Startup, so the old stack is not
started next to Neptune, and adds aNeptune USB Stackblock if you ask for autostart.
With a Poseidon 4.x installed the block is left alone: its installer uses it too. - It offers to remove the 6.0-6.2 files listed above. Only files that report version 6 or
newer are removed, so a classic Poseidon is never touched, andposeidon.prefsis kept. - It removes the 6.0-6.2 copies of
AddUSBHardware,AddUSBClassesand the optional tools,
again only those that report version 6 or newer. If an earlier installation overwrote a
Poseidon 4.x'sAddUSBHardwareorAddUSBClasses, copy them back from the 4.x archive. - It copies sounds you added to
SYS:Prefs/Presets/Poseidon/into the new drawer.
Your settings: on first start, if there is no neptune.prefs, Neptune imports
poseidon.prefs, moves the class and sound paths to the new drawers and class names, and saves
the result as neptune.prefs. Loading an old settings file by hand converts it the same way.
A classic Poseidon's (4.x) poseidon.prefs is not imported: Neptune starts with its defaults.
Neptune saves its settings in a format of its own, which Poseidon does not read.
Neptune USB's saved window positions start afresh, because the program's name changed.
Programmers: the library is opened as NEPTUNENAME ("neptune.library"), version
NEPTUNE_LIB_MIN_VERSION, with <libraries/neptune.h> and <proto/neptune.h>; the base is
NeptuneBase. The psd*() function names, structures and tags are unchanged; the settings
file's outer form is IFFFORM_NEPCFG (NEPC, was IFFFORM_PSDCFG).
The class protocol header is now <libraries/neptune_class.h>, with
<proto/neptune_class.h> (was usbclass.h, the name PoseidonDev uses); the base
UsbClsBase, the usb*() functions, tags and methods are unchanged. A class is built as
<name>.usbclass; file, romtag and library name must agree.
Classes built for 6.0-6.2 open poseidon.library and must be rebuilt.
The notes for 6.0-6.2 below keep the names those releases used.
USB cameras
The new usbvideo.usbclass drives webcams that follow the USB Video Class standard (UVC 1.0,
1.1 and 1.5). It needs xhci.device 6.4 from the Emu68 driver stack on a Pi 4 or CM4.
Tested with a Logitech C930e, up to 1920x1080 at 30 frames a second.
- Formats: Motion-JPEG and uncompressed (YUY2, NV12 and others) in every size and rate
the camera offers, and H.264 from cameras that carry it inside Motion-JPEG, such as the
C930e. Other H.264 and VP8 cameras and bulk-transfer cameras should work but are untested. - cAMIra and other VHI programs: the Installer offers to put
neptune.vhiinto
LIBS:VHI/. Each camera is one input. - Camera settings in Neptune USB: brightness, exposure, focus, white balance and the other
standard controls, applied at once and saved per camera. USBVideo(optional tools) lists a camera's modes and records video into.mkvfiles,
which play and seek on a PC and survive a crash up to the last frame written: H.264 and MJPEG,
and uncompressed YUY2 and NV12 for a PC to work on. A file goes up to 4 GiB, then the recording
goes on in the next. Each recording gets the next free number, so none is written over:USBVideo FORMAT=H264 FRAMES=300 TO=RAM:cammakesRAM:cam-0001.mkv, and withoutFRAMESit records
until Ctrl-C. From its icon, or withUSBVideo GUI, it opens a window (needs MUI) to pick a
camera and a mode, record, and open the camera's settings.- A live picture from the camera: with
videocodec.libraryinstalled (PiStorm on a
Raspberry Pi 4 or CM4) and a Picasso96 Workbench, starting an MJPEG, H.264, YUY2 or NV12 mode
opens a second window with the picture, made by the VideoCore (YUY2 and NV12 look a little flat:
the VideoCore reads their colours as full range). Drag its corner to any size.
USBVideo PREVIEWdoes the same from the Shell, without MUI. If the picture never comes, the
VideoCore is short of memory: raisegpu_meminconfig.txt. - The camera's microphone shows up as an AHI recording mode, and an idle camera is
suspended when power saving is on.
Not yet supported: choosing the frame rate from a VHI program, still images, and
maker-specific controls.
Programmers: see <devices/usbvideodevice.h>.
USB audio
- Record-only devices such as webcam microphones now get their own AHI modes, named
"Rec". - Devices with several outputs (loudspeaker and headphones, say): AHI's output choice
now works - "All outputs", or a single output by name if the device can mute each one. - Volume and gain sliders now follow the device's range evenly instead of losing most of
the level in the first steps, and the volume no longer lands on the wrong control. - Fixed: 24 bit mono recording, 8 bit recordings that were far too quiet, timing on high
speed devices, and the sample rate set on the device.
Only the USB Audio 1.0 standard is supported.
USB MIDI
- Plugging in a MIDI interface no longer crashes the machine.
- Sending and receiving MIDI now work, including System Exclusive of any length.
- One CAMD device per interface, with as many ports as the interface really has, so the
MIDI Ports editor shows the right number. Two identical interfaces each get their own name,
and every port can be used at once. - USB MIDI 2.0 devices are used in their MIDI 1.0 mode.
- The settings window is gone - it had nothing to set. Name ports in the MIDI Ports editor.
Upgrading: the new CAMD driver is written to DEVS:Midi/ the first time you plug the
interface in. Quit your CAMD programs and reboot, then, with camd.library 37, add the
interface once in the MIDI Ports editor.
USB in ROM
- The custom Kickstart holds 1.5 MB of modules instead of 1 MB.
- The build script is now
python3 ROM/build-kickstart.py, with the same arguments.
Bug fixes
- FAT sticks and drives read and write several times faster. Copying a 64 MB file from a
USB 3 stick toRAM:went from 2.8 to 18.7 MB/s, and a drawer of 594 small files copies to
the stick in 12 s instead of 47 s. Mass storage no longer mounts volumes with settings that
kept fat95 off its fast path (GH #24). - Rare crashes and freezes under heavy load.
- Behringer UMC204HD now works, and its MIDI port appears once instead of twice.
- NTFS and exFAT: The filesystem stack size is now a setting in the mass storage settings.
- A busy device is no longer logged as a failed suspend.
- A device used at the very moment power saving put it to sleep could stop responding.
- No more "Adding RT Iso Handler failed" and silent audio after a device refused a setting
change. - A hub could stop seeing new devices after one was unplugged, until a reboot.
- Possible crash when a class driver was unloaded while still in use.
- Better recovery from errors on UAS disks.
- USB floppy drives and other CBI devices no longer stop responding after a failed
command. - Possible crash on disk change with several partitions.
- USB drives come back after Restart in Neptune USB, and when every drive has gone away and
one returns within seconds (a quick replug, a hub power cycle); their volumes used to stay
missing. - Automatic restart of a USB device that stopped responding now also works with notifications
switched off, before Workbench and from ROM. - USB audio and video devices could be kept from power saving after a program quit without
stopping its stream. - Full-speed host controllers (such as the Subway clockport card) work again; since 6.1
their root hub failed to enumerate. - USB audio: webcam microphones now offer input gain; a second program can no longer
open a device already in use; unplugging no longer leaks memory. - Standard USB network devices (cdceth, CDC ECM/NCM) now pass traffic, including
multicast; NCM no longer drops packets under load. The cdceth fixes were contributed by
Maxime Vincent. - USB network adapters (asixeth, davicometh, ethwrap, lan78xx, moschipeth, pegasuseth,
rndis): fixed packet corruption or crashes, refused station addresses, and a send that
could hang the program. - USB keyboards on
input.device50.x (some custom Kickstarts): a key pressed once no
longer repeats for ever. Contributed by pcotter72. - Flushing memory (
Avail FLUSH) with no USB device in use no longer hangs or resets the
machine. Contributed by pcotter72.