Skip to content

Instantly share code, notes, and snippets.

@jcmvbkbc
Last active November 21, 2023 18:39
Show Gist options
  • Star 32 You must be signed in to star a gist
  • Fork 12 You must be signed in to fork a gist
  • Save jcmvbkbc/316e6da728021c8ff670a24e674a35e6 to your computer and use it in GitHub Desktop.
Save jcmvbkbc/316e6da728021c8ff670a24e674a35e6 to your computer and use it in GitHub Desktop.
esp32s3 linux rebuild scripts
Latest versions of these scripts are available in git repository https://github.com/jcmvbkbc/esp32-linux-build
@hpsaturn
Copy link

It is working in my ESP32S3 TTGO T7 v1.2 and the firmware was compiled in my Debian 11 with some extra packages:

libtool-bin libtool-doc gperf bison flex texinfo libtool flex texinfo help2man rsync bc
esp32s3linux.mp4

Thanks! nice job 👍

@hpsaturn
Copy link

I forgot say, that in this board, don't forget connect a FTDI to TX/RX GND pins to have the output:

photo_2023-06-29_19-32-49

@mehdinourollah
Copy link

First of all, I must say that you have done an excellent job here. I was wondering how I can make it work for ESP32 SoC boards, specifically the ESP32-WROOM-32 variant. Could you assist me in figuring this out?
@jcmvbkbc

@jcmvbkbc
Copy link
Author

how I can make it work for ESP32 SoC boards

@mehdinourollah it used to work on esp32, with this kernel branch configured with the esp32_defconfig and that bootloader configured with the sdkconfig.defaults.esp32. The thing is: you either need to keep rootfs size under certain limit or resolve that issue.

Could you assist me in figuring this out?

Please let me know if you have any specific questions.

@metanav
Copy link

metanav commented Aug 21, 2023

Hi @jcmvbkbc,

Great job! And, thank you for sharing this script. I am trying to display the console output to an SPI TFT display. I guess I need to write a device driver or I would need to change some configuration?

@jcmvbkbc
Copy link
Author

jcmvbkbc commented Aug 25, 2023

I am trying to display the console output to an SPI TFT display. I need to write a device driver or I would need to change some configuration?

@metanav I think it involves a virtual console driver and either an SPI driver or an IPC driver that would send commands to a renderer implemented in firmware.

@hpsaturn
Copy link

I added an alternative documentation from the Dockerfile that Adafruit did of this Gist:
https://github.com/hpsaturn/esp32s3-linux

@ppescher
Copy link

Hi @jcmvbkbc
I tried your "wifi" script on WSL (Win 11) and got it to build successfully after resolving some missing dependencies.

I loaded the firmware images on a custom board I made with ESP32-S3 ("wroom-1" module, N16R8 variant) and it seems to work great!

As a quick benchmark, I ran a ping test (to Google server and to my PC on the LAN) and I got this results:

--- www.google.com ping statistics ---
3035 packets transmitted, 3022 packets received, 0% packet loss
round-trip min/avg/max = 19.741/35.490/966.684 ms
--- 192.168.24.129 ping statistics ---
1351 packets transmitted, 1345 packets received, 0% packet loss
round-trip min/avg/max = 10.034/22.907/476.367 ms

Pinging back from my Windows PC yields a min/avg/max = 10/77/138 ms

I also tried to see how much download speed I could get, by running "time wget" with a 1GB file and got around 435KiB/s (1e9 bytes in 37m22s). That's about 3.5Mbps!

That's not bad at all considering the amount of overhead involved.

During all these test I got a few messages with GFP_KERNEL ("page allocation failure") but the system never hanged or rebooted.

I have to say I'm quite impressed by what you achieved with this platform. Great work!

@barbiani
Copy link

Hello everybody,

I tried to build the image using both scripts on wsl2 and got errors on the IDF setup.

++ unset WARNING_MSG
++ unset uninstall
++ unset is_idf_path_esp_idf
++ unset is_script_dir_esp_idf
++ unset __realpath
++ unset __main
++ unset __verbose
++ unset __enable_autocomplete
++ unset __cleanup
++ unset __is_dir_esp_idf
++ return 1
+ cd examples/get-started/linux_boot
+ idf.py set-target esp32s3
./rebuild-esp32s3-linux.sh: line 52: idf.py: command not found
+ cp sdkconfig.defaults.esp32s3 sdkconfig
+ idf.py build
./rebuild-esp32s3-linux.sh: line 54: idf.py: command not found
+ read -p 'ready to flash... press enter'
ready to flash... press enter

Looks like it is missing a call to ./install.sh

@hpsaturn
Copy link

only you need remove the hidden directory of your local machine of the IDF. Something like this:

rm -r ~/.espressif

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment