iSCSI target


Active member
I always wanted to write an iSCSI target since I worked (professionally) with IBM iSCSI boxes (iSCSI is used to communicated with SAN systems. It allows blocks of data to be transferred to client systems.).
I finally got around doing so. There are a few implementations for Linux/BSD/etc but I could not find one for microcontrollers so I targeted it at the Arduino environment.
Initially for the ESP32 (as I had them laying around) but last few weeks I worked on porting it to the Teensy 4.1.
Last night it succesfully ran its first benchmark and to my surprise it is quite a bit faster than the ESP32. If I interpret my logging correctly that's caused by SD-card access being faster, but I expect that the higher clockspeed will help as well.

The website is at and all code is on GitHub (link is on the webpage).

Here's a graph of bandwidth compared with other controllers:

Any chance you could explain a bit more about this project?

A bit more background about what iSCSI is and why people might want to use it could really help when the blog article is written.

Is the PC accessing Teensy via USB or Ethernet or some other way?

This graph is good, but usually we need at least 1 photo showing the project. Is this just a Teensy 4.1 connected a PC's USB or Ethernet port?

Remote storage is usually a NAS or a SAN. A NAS is where you access data by files. p:\\diary.pdf or so. A SAN is accessed via a protocol like iSCSI, FC and others. A client ("initiator") then requests blocks of data like how it does from a harddisk. A harddisk does not store files, it stores blocks of data - in those blocks a filesystem is build up with pointers to the contents of your files (file path) and so on.

The PC (running Linux, windows, vmware or whatever as long as it understands iSCSI) connects to the Teensy 4.1 via Ethernet.

Please note that I wrote this to see if I can, not perse if it is useful for anything. Also to see what a microprocessor is capable off today.

I'll give a photo but it is not very special; only a teensy with Ethernet as it is mostly a software-project.

In this graph you see that iTEENSY quickly goes to 10MB/s, maxing out the Ethernet connection:


Thus in theory the Teensy4.1 should be able to reach higher speeds even (if it would have Gb Ethernet).
Last edited:
Yes, it is in the ESP32 microcontrollers folder. I have to rename that folder (will do so now but it may take a bit). I just renamed that folder from ESP32 to microcontrollers.
It uses platformio.
pio run -t upload -e Teensy4_1
should produce a runnable device.
Last edited: