{"id":17465502,"url":"https://github.com/folkertvanheusden/iesp","last_synced_at":"2025-04-19T20:25:33.209Z","repository":{"id":220721617,"uuid":"752180521","full_name":"folkertvanheusden/iESP","owner":"folkertvanheusden","description":"iSCSI target for microcontrollers (ESP32/Teensy4.1/RP2040W), Linux, *BSD and Microsoft Windows","archived":false,"fork":false,"pushed_at":"2024-10-24T09:34:43.000Z","size":1038,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-24T18:32:18.100Z","etag":null,"topics":["esp32","freebsd","linux","macosx","windows"],"latest_commit_sha":null,"homepage":"https://vanheusden.com/electronics/iESP/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/folkertvanheusden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["folkertvanheusden"],"patreon":"folkertvanheusden"}},"created_at":"2024-02-03T09:09:43.000Z","updated_at":"2024-10-24T09:34:47.000Z","dependencies_parsed_at":"2024-03-01T16:29:04.349Z","dependency_job_id":"bcf4e925-3b93-42a3-b542-c9174fc6371f","html_url":"https://github.com/folkertvanheusden/iESP","commit_stats":null,"previous_names":["folkertvanheusden/iesp"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folkertvanheusden%2FiESP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folkertvanheusden%2FiESP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folkertvanheusden%2FiESP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folkertvanheusden%2FiESP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/folkertvanheusden","download_url":"https://codeload.github.com/folkertvanheusden/iESP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249793578,"owners_count":21326564,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32","freebsd","linux","macosx","windows"],"created_at":"2024-10-18T12:05:42.475Z","updated_at":"2025-04-19T20:25:33.190Z","avatar_url":"https://github.com/folkertvanheusden.png","language":"C++","funding_links":["https://github.com/sponsors/folkertvanheusden","https://patreon.com/folkertvanheusden"],"categories":[],"sub_categories":[],"readme":"what it is\n----------\niESP is an iSCSI target that was originally designed for the ESP32 and Teensy 4.1 microcontroller. This allows you to boot your VMWare cluster from an SD-card :-)\nSince then it was ported to Linux, \\*BSD (tested on FreeBSD) and Microsoft Windows.\n\n\nrequirements\n------------\n* a Linux/\\*BSD/Windows/Apple system with cmake and a C++ compiler\n\nOR\n\n* a supported microcontroller with an SD-card reader connected to it and platformio\n\n\ncompiling\n---------\nFor the ESP32/Teensy4.1:\n* cd microcontrollers\n* adjust the settings in data/cfg-iESP.json (see cfg-iESP.json.example)\n* pio run -t upload -e ESP32-wemos     # Wemos32    (WiFi)\n* pio run -t upload -e ESP32-WT-ETH01  # WT32-ETH01 (Ethernet)\n* pio run -t upload -e Teensy4_1       # Teensy4.1  (Ethernet)\n\nFor the Raspberry Pi Pico (RP2040W):\n* cd microcontrollers/RP2040\n* * adjust the settings in \"wifi.h\"\n* pio run\n* * Manually copy the .pio/build/BUILD_FOR_RP2040W/firmware.uf2 file onto the Pico\n* * Optionally connect a green LED to GPIO 17 and a yellow LED to GPIO 18\n* * Connect the following pins of your SD card reader to: MISO to GPIO 8, MOSI to GPIO 11, SCK to GPIO 10 and SS/CS to GPIO 12\n\nFor Linux/FreeBSD/Apple:\n* mkdir build\n* cd build\n* cmake ..\n* make\n\nOn Debian systems you can also run the following to create an installable .deb-package file:\n\n* dpkg-buildpackage -us -uc\n\nFor RedHat (Fedora etc.):\n\n* rpmbuild -ba iesp.spec\n\nFor Windows:\n* mkdir buildMingw64 \u0026\u0026 cd buildMingw64\n* cmake -DCMAKE_TOOLCHAIN_FILE=../mingw64.cmake ..\n\nIf you copy the result (iesp.exe) to an other windows system, make sure to include:\n* libgcc_s_seh-1.dll\n* libgomp-1.dll\n* libstdc++-6.dll\n* libwinpthread-1.dll\n\nWhen crosscompiling under Debian, they are under /usr/lib/gcc/x86_64-w64-mingw32/13-posix/ and /usr/x86_64-w64-mingw32/lib/.\n\n\nusing\n-----\nOn the microcontroller it uses the connected SD-card. Make sure it is formatted in 'exfat' format (because of the file size). Create a test.dat file on the SD-card of the size you want your iSCSI target to be. The microcontroller version needs to be configured first: under microcontrollers/data there's a file called cfg-iESP.json.example. Rename this to cfg-iESP.json and enter e.g. appropriate WiFi settings (if applicable). Leave \"syslog-host\" empty to not send error logging to a syslog server.\n\nOn non-microcontrollers, run iESP with '-h' to see a list of switches. You probably want to set the backend file/device and to set the listen-address for example. You can also use an NBD-backend, making iESP in an iSCSI-NBD proxy.\n\nThis software has a custom SNMP library (SNMP agent).\n* .1.3.6.1.2.1.142.1.10.2.1.1   - PDUs received\n* .1.3.6.1.2.1.142.1.10.2.1.3   - number of bytes transmitted\n* .1.3.6.1.2.1.142.1.10.2.1.4   - number of bytes received\n* .1.3.6.1.2.1.142.1.1.1.1.10   - failure count\n* .1.3.6.1.2.1.142.1.1.2.1.3    - PDUs with errors\n* .1.3.6.1.2.1.142.1.6.2.1.1    - logins\n* .1.3.6.1.2.1.142.1.6.3.1.1    - logouts\n* .1.3.6.1.4.1.2021.100.2       - software version (not in Posix version)\n* .1.3.6.1.4.1.2021.100.3       - build date\n* .1.3.6.1.4.1.2021.11.54       - I/O wait in 100ths of a second\n* .1.3.6.1.4.1.2021.11.9.0      - CPU usage\n* .1.3.6.1.4.1.2021.13.15.1.1.2 - device name\n* .1.3.6.1.4.1.2021.13.15.1.1.3 - number of bytes read\n* .1.3.6.1.4.1.2021.13.15.1.1.4 - number of bytes written\n* .1.3.6.1.4.1.2021.13.15.1.1.5 - number of reads\n* .1.3.6.1.4.1.2021.13.15.1.1.6 - number of writes\n* .1.3.6.1.4.1.2021.4.11.0      - free RAM (kB heap space, only on microcontrollers)\n* .1.3.6.1.4.1.2021.9.1.9.1     - disk free estimate (will only work when using TRIM/UNMAP/DISCARD)\n\n\ntest tools\n----------\n* test-blockdevice.py  tests if what is written, is readable later on. this test overwrites the contents of a device!\n* block-speed-randread.py  measures the bandwidth/iops for random reads. use plot.sh to create png-files of the output.\n\n\ntest methodology\n----------------\nTested with \"test-blockdevice.py\", 'FSX' by Apple (using the rust version from https://github.com/asomers/fsx-rs the original version is at https://github.com/apple/fstools/ ) and the 'test-tool' from libiscsi.\n\nFor FSX:\n* a disk-image is created on a ramdisk\n* that disk-image is given as a backend to iesp\n* in a virtual machine, a multipath setup (2 paths) is created\n* in the virtual machine, the resulting iSCSI target is mounted under a mountpoint (ext4 filesystem with journal and discard-mountoption)\n* 2 instances of FSX(-rs) are started and monitored for error messages\n* 1 instance of test-blockdevice.py with 3 threads is started with trim/discard/unmap and deduplication-support set to 81% and trim to 9%\n\nFor test-blockdevice.py:\n* a disk-image is created on a ramdisk\n* that disk-image is given as a backend to iesp\n* test-blockdevice.py is ran as: ./test-blockdevice.py -d \u003cdevicename\u003e -b 4096 -u 75 -n 6 -T 10 \n* any errors? then failed\n* for a microcontroller: make sure block-count (-m) multiplied by block size (-b) is 8192 bytes or less as that's the limit in there\n\n\nbuild status\n------------\n![POSIX CI](https://github.com/folkertvanheusden/iESP/actions/workflows/posix.yaml/badge.svg)\n![Windows CI](https://github.com/folkertvanheusden/iESP/actions/workflows/windows.yaml/badge.svg)\n![Microcontrollers CI](https://github.com/folkertvanheusden/iESP/actions/workflows/platformio.yaml/badge.svg)\n![MacOS X CI](https://github.com/folkertvanheusden/iESP/actions/workflows/macos.yaml/badge.svg)\n\n![Coverity](https://scan.coverity.com/projects/29725/badge.svg)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/4ac7abe4ee944411ac6c9cdc80eaf991)](https://app.codacy.com/gh/folkertvanheusden/iESP/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n\n\nlicense\n-------\nIt is licensed under the MIT license.\nWritten by Folkert van Heusden \u003cmail@vanheusden.com\u003e in 2023/2024.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolkertvanheusden%2Fiesp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffolkertvanheusden%2Fiesp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolkertvanheusden%2Fiesp/lists"}