I haven't seen reports of people using the DAN][ controller's Ethernet option. This is also a neat feature that Daniel added to the card. He added support to "IP65", the 6502's TCP/IP library. There is an example disk in the github project.
I now added something else: I squeezed a tiny FTP server into the Dan][ controller's "Arduino" firmware itself. It provides network access to the SD cards, so you can remotely upload or download volume images. So this does not run on the Apple II/6502, but completely independently on the tiny Arduino CPU. It has some limitations, but turned out to be much better than I initially expected. I find this super useful, especially if you're developing/working on something and require frequent updates and are tired with messing with these tiny MicroSD cards.
How to install
You need a WIZnet 5500 module. They are cheap. 8-10 Euro/bucks a piece. And you need a 10-pin ribbon cable with IDC connectors to connect it to the "J6" header:
I installed mine in one of the DB19 breakouts of the Apple IIe case, using a 3D printed bracket. The DB19 breakouts are too narrow for the Ethernet port, but it works in this way:
You can leave out/remove the two resistors R27 and R28 on the controller PCB when you connect the WIZnet. These connect signals to the header which are not meant for the WIZnet, but for an external SD card adapter. Nothing will break if you have these soldered, but they unnecessarily connect outputs to ground via those 470 Ohm resistors:
You need new firmware for the Arduino, if you want the FTP server option (see github below). Only the Arduino needs an update. The card's (E)EPROM is unrelated to this feature.
The FTP server uses a static IP address - no DHCP autoconfig etc. You can change the default IP address in the sources, or use a simple utility to configure the controller. I made a 140K ProDOS "ipconfig" disk image (see "dsk" folder), which you can write to a disk - or, of course, store it as a volume image on the DAN II drive itself, using the .po image file. Configuration should be self explanatory. It also allows to change the MAC address. But you only need to worry about MACs when you are as crazy as me, and have multiple of these cards in your network. Then the MAC addresses must be configured to be unique:
With the new firmware, the FTP server is automatically active when the WIZnet is present - and an Ethernet cable is plugged. The FTP server is accessible within 2-3 seconds after resetting the Apple II. You will see the LED "D11", which is just above to the pin header, faintly flashing. Once you connect via FTP, this LED will light bright and (almost) continuously, since Arduino and WIZnet are talking non-stop.
The tiny FTP server comes with some limitations - mainly due to limited space:
- You can only "see" the "BLKDEVxx.PO" files for the volume images via FTP. You cannot see or access any other files on the SD cards.
- You cannot navigate or create new folders. It only provides fixed folders: the root level and two subdirectories "SD1" and "SD2" for the SD-cards. The SD card directories contain the the respective BLKDEVxx.PO files. That's it.
- You cannot create, remove or rename files. Yes, renaming would be handy to organize volumes on the SD cards. But, no, it's not supported.
- Literally, the only thing you can do is read or write to any of the existing BLKDEVxx.PO volume files.
Preparing the SD cards
You should prepare new SD cards by writing (dummy) images for each BLKDEVxx.PO file before using the FTP server. Use any file of the largest supported size (65535 blocks of 512 bytes = 33553920 bytes or about 33MB). Or use any larger file - doesn't matter. Just important that the files are allocated with sufficient size, so they become usable for remote access - and you never need to remove or manually touch the SD cards again. The Arduino will never change any disk meta data (directory entries, file allocation tables etc). This is good, since it basically excludes any chance that the disks could ever get corrupted. The Arduino will only ever update the raw data blocks of existing files - nothing else.
Hints on using Apple II and the FTP server
When an FTP session is connected, the Apple II's access is suspended. The Apple II/ProDOS will hang if it tries to access the DAN][ controller. But, no worries, once you disconnect your FTP session, the Apple II immediately resumes.
Of course, Daniel's original Ethernet support for IP65 also still works. Surprisingly everything still fits into the Arduino flash. When you run a program on the Apple II with the IP65 stack, it takes (remote) control of the Ethernet port. The FTP server on the Arduino is then automatically shut down. So both options can be used - just not at the same time. The FTP server is reenabled by resetting the Apple II.
Remember, resetting the Apple II also resets the Arduino. Don't press Ctrl-RESET while your actively up- or downloading volume images via FTP.
FTP data transfers at about 170-200KB/s. Transmitting a full 33MB volume image takes a bit less than 3 minutes. Yes, not too fast. But I was actually expecting much worse. And considering the alternative of removing, reinstalling and messing with these tiny MicroSD cards, it's not that bad.
And concerning speed: for frequent image updates, for example when developing/testing, you can always use smaller volume images. Volumes of any (smaller) size are supported - even if the "BLKDEVxx.PO" files were originally initialized with much larger files.
A standard floppy disk-sized ProDOS image of 140K transfers in less than a second - and you're ready to go (reset and boot the image). I find this really cool: I added a call to a command-line ftp utility to the build makefiles of my projects. You run "make", it compiles/assembles the program, builds a small ProDOS volume image, immediately downloads it via FTP to the DAN ][ controller - all in matter of seconds. You reset the Apple II and - boom! - it runs. Loading an image to the real hardware is almost faster now than launching it in a simulator.
Though the FTP server is tiny, it has some extras - it is "ProDOS-aware":
- When you list the files of the SD cards, pay attention to the colums normally showing "file owner" and "group" information. The server uses these fields to report the ProDOS volume name instead. So you can directly see in your FTP client what each "BLKDEV" file actually contains.
- The server also considers the size of the ProDOS volume. So, when you upload, say an 140K image - but the BLKDEV file in the SD card's DOS file system is larger (33MB), then the FTP server properly shows and treats this as a 140KB file (or whatever volume size is used).
Basic FTP utilities should all work out of the box. Powerful tools, like FileZilla, also work, but require a configuration setting:
- The FTP server only supports a single connection. FileZilla always tries to use multiple connections (to navigate directory structures, for file transfers etc). Look at the "connection properties": there is an option "Limit number of simultaneous connections". Check this option. And set the "maximum number of connections" to "1". That's all.
How it looks
So, here's how it looks, for example, when connecting with FileZilla FTP. Notice the sneaky abuse of the "owner/group" file information:
You can find the firmware with FTP server in my experimental "ftp" github branch:
This also includes my previous boot menu updates. I've used it for a bit now and it seems stable to me, but if you noticed anything, let me know. The "dsk" folder contains the volume images for Daniel's "IP65" examples and for the simple "FTP ipconfig" utility.
That's it. Good luck! :)
(PS: Bonus question for Apple II fans. The tiny FTP server has no "date/time" support, so reports all files with a fixed date: June 10th, 1977. You know this date, right? :) )