Hi,
I've got a pair of old SSG320M devices here (also sold by Juniper as the J2320) which are ancient but it seems a shame to throw them away. They have hardware crypto offload, modular slots in the front, user replaceable RAM and storage, up to 28 GBE ports some of which can operate as a switch and some as individual interface ports.
The hardware itself is a fairly bog standard 32-bit Intel PC really, the CPU is in a socket 478, it has 4 DDR DIMM slots, a 'standard' Intel Northbridge/Southbridge, but after that things get interesting. Oh and an external 'secondary' CF slot. They were all 2.0GHz Celerons with either 256MB or 1GB of RAM, but the device has 4 DIMM slots so I see no reason you couldn't put 4GB of DDR400 in it, and a better P4 CPU.
The chipset appears to have a GPU and an e1000 NIC in it, but obviously neither of these do anything. The e1000 NIC has a blank eeprom, no MAC adddress, etc.
The hardware crypto is a Cavium Nitrox Lite, which I don't think there was ever real Linux support for. There was a proprietary openssl offload module for this chip but the Linux kernel support for Cavium devices is for newer 64-bit chips.
The motherboard then connects through a proprietary edge connector to the 4-module slot backplane. The backplane has one (what I assume is) PCI-X slot which is connected to a sub-board. This sub-board has the forward facing ports on it (USB, serial console, 4x GigE) and internally has an unpopulated IDE header and the internal 'primary' CF slot for the OS - these devices could run either the legacy Netscreen OS or an early (v8 if I remember right) version of JunOS. This crossover period and need to support users of both OS after Juniper bought Netscreen is why this is an x86 device which is very un-Juniper, these days all their devices are mips running BSD. The USB, serial console, and CF storage all appear as expected within OpenWRT.
This same sub-board has a Marvell 98DX106 switch controller chip on it, which looks like it should be supported by the 'prestera' kernel module, but I can't get that to work. I suspect this device is addressed via memory/DMA rather than directly over the PCI bus, as it does not appear in lspci output. There is another chip on that board with a large heatsink on which I am yet to remove to find out what it is. This means that at the time of writing the device has no functional network interfaces.
OpenWRT 'generic' boots and runs on the device out of the box. It has an AMIBIOS (hilariously the BIOS screen says 'TRIAL VERSION NOT FOR RESALE'). The BIOS handles serial console redirection, although it is by default 9600 baud. It also has a hardware watchdog enabled by default which will reboot the device and reset the primary boot device back to the CF after 37 seconds unless disabled. When I got these, they were still running ScreenOS and the BIOS options for boot devices were all disabled. However factory-resetting ScreenOS, logging in and setting the boot config to junos from within ScreenOS unlocked the boot options in the BIOS and the device can be set to boot from network, USB, or either CF slot.
Having written all this out, I do get the feeling I am probably wasting my time on this ancient gear, but it does seem a shame to throw it in a skip when it is still plenty-capable.
Does anyone have any suggestions on how I might get the Marvell switch chip to work? I've built an image of v23.05.0-generic with the prestera module enabled (and prestera-pci) but they don't appear to do anything. The Marvell device as mentioned does not appear on the PCI bus - I wonder if it needs something sent to it to 'wake it up' or similar.