Coder Social home page Coder Social logo

esp32's People

Contributors

henrikastro avatar kdomanski avatar kevindt avatar nick507 avatar petervanderwalt avatar shaise avatar terjeio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp32's Issues

git clone --recursive git://github.com/grblHAL/ESP32

Should be 'https:' instead of 'git:'. Also the instructions to copy grbl/* and other files not needed (at least I was able to build and flash esp32).
The instructions to edit files for your machine is good.
Thanks for the hard work.

Need your help, compilation failed, got error

I downloaded esp idf 4.3 on windows system, downloaded your source code, entered cd to enter the esp directory, entered idf.py build to compile,
Got the error, depending on how some work needs to be done before this?
cc
ccss

CMake issue

I have built grbHAL/ESP32 successfully several times. Now I did a fresh install on another machine and always getting
Unknown CMake command "idf_component_register".
during idf.py build
cmake version 3.18.4
esp-idf is release/v4.3
running on debian/bullseye, Python 3.9.2
Any hints appreciated!

Direct connect using Ethernet with a W5500

So, I'm trying to direct connect GrblHAL with an Ethernet port to my Computer. I've seen the telnet and websocket plugins and it seems that if I wanna make this happen I would have to create something from them. I've also seen that there is already an SPI support because of the trinamic drivers and I was wondering if maybe that could somehow make my life easier setting this up?

I've already figured out how to set an static IP to my ESP32 and connect to it using other examples from the ESP-IDF framework, but I'm having trouble on how to integrate this with HAL. I was wondering if you could give me a guiding light on how should I be tackling this to make it work.

I've tried using the websocket and telnet that exists on HAL but since the ESP only supports wi-fi I can't even change the settings related to Ethernet connection and also the HAL doesnt know how my W5500 is connected to the board and how to acess it. I have a working example with the SPI and maybe all I need is a way to integrate that to the HAL? Or maybe at this point I should change microcontrollers, I don't know, what's your opnion on this?

HY Spindle + ESP32 + RS485 converter: RS485_DIR_ENABLE

I'm stuck setting up my machine because I always get a spindle speed timeout alarm with this setup. I have a 3.3V capable TTL<->RS485 converter that only has TX/RX pins, no direction pin.
image

I found in driver.h:
#if SPINDLE_HUANYANG
#define RS485_DIR_ENABLE 1

which means that regardless of my setting in CMakeLists.txt
OPTION(RS485_DIR_OUT "Compile with RS485 direction pin enabled" OFF)
it's always set to ON (=have direction pin), correct?

I assume the timeout error is because of the direction pin missing?

Thanks!

GRBL crashing when I go to zero the axes

Use TinyBee v1.0 (ESP32) board and it's crashing. After doing HOME and doing some movements when I go to Zero the XYZ axes, Grblhal crashes. After that I need to close ioSender and keep the board. I couldn't identify if the error is an IOSender or GRBLHAL problem.

Help setting up as AP

So, I'm trying to set up my ESP32 as an AP and I've already setted the CMakesList.txt settings of Networking as SoftAP as on and I still have no AP created. Any setting above $70 gives me an "error:53 - Setting is not available, possibly due to limited driver support.". It cannot be a limited driver issue since I've just setted up my ESP as an AP using FluidNC and it seems like I'm missing something on the setup of GrblHAL itself. Any ideas?

ESP32 Wroom + SDcard plugin error

You have developed grblhal for people and you help us voluntarily, you are Hero!!.

I have a problem when using the sdcrad plugin. The error shown in the console is as below
[MSG:Warning: Failed to initialize SD card] Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled. Core 1 register dump: PC : 0x400e7af0 PS : 0x00060530 A0 : 0x800e4c64 A1 : 0x3ffb64b0 A2 : 0x00000000 A3 : 0x3f404c8a A4 : 0x00000000 A5 : 0x0000001f A6 : 0x00001004 A7 : 0x3ffaed3c A8 : 0x00000000 A9 : 0x00000000 A10 : 0x00000000 A11 : 0x3ffb1ca0 A12 : 0x3ffb1c54 A13 : 0x00000000 A14 : 0x3ffb1ca0 A15 : 0x3ffb1c54 SAR : 0x00000020 EXCCAUSE: 0x0000001c EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT : 0xffffffff Backtrace:0x400e7aed:0x3ffb64b0 0x400e4c61:0x3ffb64d0 0x400e605c:0x3ffb6510 0x400e327c:0x3ffb6550 0x400e4293:0x3ffb65d0 0x400e42dc:0x3ffb65f0 0x400e1d71:0x3ffb6610 0x400db6f1:0x3ffb6660 0x400d5b7c:0x3ffb66a0 0x400d5883:0x3ffb66c0 ELF file SHA256: a20ced2169f81b78 CPU halted.

probing not supported by driver or unsupported G38.x command

Hi,

I own the OPENBUILDS Blackbax X32. Since I want to activate safety door, I need a new GRBL. The compilation worked great. Unfortunately I get the following error message "probing not supported by driver or unsupported G38.x command" when I start a probe. I ask for help.

thank you

Setting Wifi password that contains "!"?

How do I set the station wifi password when the password contains an exclamation mark?
I can set the password via $75, but the moment I enter the ! character, the serial terminal becomes unresponsive and I have to do a hard reset.

Even just a plain "!" on a new line will crash the board.

Problem when using grblHAL with Fysetc E4 v1.0

I'm in need of some help!
When I compile GRBLHAL for the "Fysetc E4 v1.0" board and use IOSender to send a movement instruction to the X or Y axes, the two axes move simultaneously, I already checked the IO map but the error persists.
I'm making the necessary changes to CMakeList.txt. I even thought it was a defect on the board, but I compiled the GRBL_ESP32 version and the axes work normally with it.
I'm using GRBLHAL ESP32 clone from githabe compiling with Visual Studio Code.

Is this code functional for anyone

Honest question before I waste more hours debugging endless guru meditations.
Does this code work for anyone ? If so what hardware are you using ?
Thanks !

Compiling issue on ESP32 with Networking and SDCard using EDP-IDF 4.3

This only occurs with both Networking and SDCard ON in CmakeLists.txt
The error does not make sense.

-elf\sys-include\sys\fcntl.h:3,
from C:/Users/myName/Desktop/esp-idf/components/lwip/port/esp32/include/lwipopts.h:39,
from C:/Users/myName/Desktop/esp-idf/components/lwip/lwip/src/include/lwip/opt.h:51,
from C:/Users/myName/Desktop/esp-idf/components/lwip/lwip/src/include/lwip/debug.h:41,
from ../main/networking/ftpd.c:52:
../main/networking/ftpd.c: In function 'send_next_directory':
../main/networking/ftpd.c:419:41: error: 'vfs_stat_t' {aka 'struct '} has no member named 'st_mtim'; did you mean 'st_mtime'?
s_time = gmtime(&st.st_mtime);
^~~~~~~~
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

TMC2209 in UART

I'm using BigTree Tech 2209s. The User Manual for this 2209 informs to use the solder jumper to enable UART on the driver pin for TX and a 1k ohm resistor on that same pin for RX. I have a limited number of available pins on the ESP32 (not using any IO expansion) and I would like to use a common pin for all drivers (using MS1/MS2 to set the addresses). I don't really see how to configure this as no option in CMakeLists.txt and no examples.

ESP32 Crash

Board: MKS-DLC32

I set something in the ESP3D UI(To test saving as it was giving errors), now it crashes at startup?

--- idf_monitor on /dev/ttyUSB0 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1504
load:0x40078000,len:12960
load:0x40080400,len:3020
0x40080400: _init at ??:?

entry 0x400805e4

GrblHAL 1.1f ['$' or '$HELP' for help]
ALARM:12
[MSG:Check Limits]

assert failed: xTimerGenericCommand timers.c:390 (xTimer)

Backtrace:0x400818b2:0x3ffb3d60 0x4008be95:0x3ffb3d80 0x40092a65:0x3ffb3da0 0x4008eb0d:0x3ffb3ec0 0x400e5749:0x3ffb3ef0 0x4008ed10:0x3ffb3f10
0x400818b2: panic_abort at /home/errol/esp/esp-idf-4.3/components/esp_system/panic.c:404

0x4008be95: esp_system_abort at /home/errol/esp/esp-idf-4.3/components/esp_system/system_api.c:112

0x40092a65: __assert_func at /home/errol/esp/esp-idf-4.3/components/newlib/assert.c:85

0x4008eb0d: xTimerGenericCommand at /home/errol/esp/esp-idf-4.3/components/freertos/timers.c:390
 (inlined by) xTimerGenericCommand at /home/errol/esp/esp-idf-4.3/components/freertos/timers.c:385

0x400e5749: vTimerCallback at /home/errol/git/ESP32/build/../main/driver.c:468

0x4008ed10: prvProcessReceivedCommands at /home/errol/esp/esp-idf-4.3/components/freertos/timers.c:781
 (inlined by) prvTimerTask at /home/errol/esp/esp-idf-4.3/components/freertos/timers.c:558



ELF file SHA256: 7dcd6de6653da1bc

CPU halted.

Multiple Spindle with VFD code correction

In driver.c line 1899

PWM is not initialized when VFD is enable

#if (!VFD_SPINDLE || N_SPINDLE > 1) && defined(SPINDLE_ENABLE_PIN)
//#if VFD_SPINDLE != 1 && defined(SPINDLEPWMPIN)

If VFD is set by default, PWM is set to 100%, I don't know where to change that.
Is there a way to have PMW on I2S Pin?

Regards,

Joachim

Gang Axis with I2S does not work

I'm trying to Gang the Y axis with the 4th axis and it does not seem to be working for me. I'm using I2S mode, the M3_DIRECTION_PIN works but the M3_STEP_PIN and M3_ENABLE_PIN are not working.

Unable to compile without USE_I2S_OUT

I am just starting to setup a board definition to experiment with grblHal on ESP32

my pinmap:

#if N_ABC_MOTORS > 1
#error "Axis configuration is not supported!"
#endif

#define BOARD_NAME "Peter's little test"
#define HAS_IOPORTS
//#define HAS_BOARD_INIT

//#define USE_I2S_OUT  //  If I uncomment this and pin definitions, it compiles.  If I comment out I2S compilation fails. 
//#define I2S_OUT_BCK GPIO_NUM_16
//#define I2S_OUT_WS GPIO_NUM_17
//#define I2S_OUT_DATA GPIO_NUM_21

// timer definitions
#define STEP_TIMER_GROUP TIMER_GROUP_0
#define STEP_TIMER_INDEX TIMER_0

// Define step pulse output pins.
#define X_STEP_PIN          GPIO_NUM_12
#define Y_STEP_PIN          GPIO_NUM_27
#define Z_STEP_PIN          GPIO_NUM_15

// Define step direction output pins.
#define X_DIRECTION_PIN     GPIO_NUM_14
#define Y_DIRECTION_PIN     GPIO_NUM_26
#define Z_DIRECTION_PIN     GPIO_NUM_2

// Define homing/hard limit switch input pins and limit interrupt vectors.
#define X_LIMIT_PIN         GPIO_NUM_35
#define Y_LIMIT_PIN         GPIO_NUM_34
#define Z_LIMIT_PIN         GPIO_NUM_39

// Define ganged axis or A axis step pulse and step direction output pins.
#if N_ABC_MOTORS > 0
#define M3_AVAILABLE
#define M3_STEP_PIN         GPIO_NUM_33
#define M3_DIRECTION_PIN    GPIO_NUM_32
#define M3_LIMIT_PIN        GPIO_NUM_36
#endif

// Define spindle enable and spindle direction output pins.
#define SPINDLE_ENABLE_PIN  GPIO_NUM_4
#define SPINDLEPWMPIN       GPIO_NUM_25

// Define flood and mist coolant enable output pins.
// Only one can be enabled!

#define COOLANT_MIST_PIN    GPIO_NUM_21
//#define COOLANT_FLOOD_PIN   GPIO_NUM_21
// Define user-control CONTROLs (cycle start, reset, feed hold) input pins.
#if SAFETY_DOOR_ENABLE
#define SAFETY_DOOR_PIN     GPIO_NUM_16
#else
#define RESET_PIN           GPIO_NUM_16 //??
#endif

// Define probe switch input pin.
#if PROBE_ENABLE
#define PROBE_PIN           GPIO_NUM_22
#endif

#ifdef HAS_IOPORTS
#define AUXINPUT0_PIN       GPIO_NUM_13
#define AUXINPUT1_PIN       GPIO_NUM_0
#endif

// Pin mapping when using SPI mode.
// With this mapping, SD card can be used both in SPI and 1-line SD mode.
// Note that a pull-up on CS line is required in SD mode.
#define PIN_NUM_MISO        GPIO_NUM_19
#define PIN_NUM_MOSI        GPIO_NUM_23
#define PIN_NUM_CLK         GPIO_NUM_18
#define MOTOR_CS_PIN        GPIO_NUM_17
#if SDCARD_ENABLE
#define PIN_NUM_CS          GPIO_NUM_5
#endif

#if MODBUS_ENABLE
#define UART2_RX_PIN        GPIO_NUM_25
#define UART2_TX_PIN        GPIO_NUM_4
#endif

#if KEYPAD_ENABLE
#error No free pins for keypad!
#endif

Without USE_I2S_OUT it fails to compile. If I uncomment USE_I2S_OUT it compiles fine. My board (and plans for it) does not use I2S

 idf.py build
Executing action: all (aliases: build)
Running make in directory /root/ESP32/build
Executing "make -j 3 all"...
[  1%] Built target partition_table_bin
[  1%] Built target custom_bundle
[  1%] Built target esp32_linker_script
[  1%] Performing build step for 'bootloader'
[  1%] Built target _project_elf_src
[  1%] Built target __idf_ulp
[  2%] Built target __idf_esp_serial_slave_link
[  1%] Built target _project_elf_src
[  5%] Built target __idf_log
[  3%] Built target __idf_sdmmc
[ 11%] Built target __idf_esp_rom
[  4%] Built target __idf_esp_https_ota
[ 22%] Built target __idf_esp_hw_support
[  4%] Built target __idf_esp_http_server
[ 31%] Built target __idf_efuse
[  5%] Built target __idf_esp_http_client
[ 60%] Built target __idf_bootloader_support
[  5%] Built target __idf_tcp_transport
[ 62%] Built target __idf_spi_flash
[  5%] Built target __idf_esp-tls
[ 64%] Built target __idf_micro-ecc
[  7%] Built target __idf_nghttp
[  7%] Built target __idf_app_trace
[ 89%] Built target __idf_soc
[ 93%] Built target __idf_hal
[  7%] Built target __idf_cxx
[ 95%] Built target __idf_main
[  8%] Built target __idf_newlib
[ 98%] Built target bootloader.elf
[ 10%] Built target __idf_freertos
[100%] Built target gen_project_binary
[ 10%] Built target __idf_esp_timer
[100%] Built target app
[ 11%] Built target __idf_esp_common
[ 11%] No install step for 'bootloader'
[ 12%] Built target __idf_esp32
[ 12%] Completed 'bootloader'
[ 12%] Built target __idf_perfmon
[ 13%] Built target bootloader
[ 14%] Built target __idf_espcoredump
[ 15%] Built target __idf_xtensa
[ 17%] Built target __idf_driver
[ 17%] Built target __idf_esp_ringbuf
[ 17%] Built target __idf_esp_hw_support
[ 18%] Built target __idf_soc
[ 18%] Built target __idf_heap
[ 19%] Built target __idf_log
[ 25%] Built target __idf_lwip
[ 26%] Built target __idf_esp_wifi
[ 31%] Built target __idf_wpa_supplicant
[ 31%] Built target __idf_esp_event
[ 32%] Built target __idf_esp_netif
[ 32%] Built target __idf_tcpip_adapter
[ 33%] Built target __idf_esp_eth
[ 33%] Built target __idf_vfs
[ 36%] Built target __idf_hal
[ 36%] Built target __idf_esp_rom
[ 37%] Built target __idf_esp_system
[ 38%] Built target __idf_esp_gdbstub
[ 38%] Built target __idf_pthread
[ 39%] Built target __idf_nvs_flash
[ 41%] Built target __idf_spi_flash
[ 42%] Built target __idf_esp_ipc
[ 44%] Built target __idf_bootloader_support
[ 44%] Built target __idf_app_update
[ 45%] Built target __idf_efuse
[ 52%] Built target mbedcrypto
[ 52%] Built target mbedx509
[ 53%] Built target mbedtls
[ 53%] Built target __idf_mbedtls
[ 53%] Built target __idf_esp_pm
[ 54%] Built target __idf_json
[ 55%] Built target __idf_console
[ 55%] Built target __idf_protobuf-c
[ 55%] Built target __idf_asio
[ 55%] Built target __idf_cbor
[ 56%] Built target __idf_unity
[ 56%] Built target __idf_esp_adc_cal
[ 57%] Built target __idf_coap
[ 57%] Built target __idf_esp_websocket_client
[ 57%] Built target __idf_expat
[ 58%] Built target __idf_wear_levelling
[ 58%] Built target __idf_jsmn
[ 61%] Built target __idf_freemodbus
[ 62%] Built target __idf_mqtt
[ 82%] Built target __idf_bt
[ 90%] Built target __idf_libsodium
[ 91%] Built target __idf_spiffs
[ 92%] Built target __idf_openssl
[ 93%] Built target __idf_protocomm
[ 93%] Built target __idf_mdns
[ 93%] Built target __idf_esp_hid
[ 94%] Built target __idf_cmock
[ 95%] Built target __idf_fatfs
[ 95%] Built target __idf_esp_local_ctrl
[ 96%] Built target __idf_wifi_provisioning
Scanning dependencies of target __idf_main
[ 96%] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/driver.c.obj
[ 96%] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/ioports.c.obj
[ 96%] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/esp32-hal-uart.c.obj
[ 96%] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/i2c.c.obj
[ 96%] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/ioexpand.c.obj
[ 96%] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/i2s_out.c.obj
/root/ESP32/main/i2s_out.c:120:17: error: unknown type name 'i2s_out_pulse_func_t'
 static volatile i2s_out_pulse_func_t i2s_out_pulse_func;
                 ^~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:125:17: error: unknown type name 'i2s_out_pulser_status_t'
 static volatile i2s_out_pulser_status_t i2s_out_pulser_status = PASSTHROUGH;
                 ^~~~~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:125:65: error: 'PASSTHROUGH' undeclared here (not in a function)
 static volatile i2s_out_pulser_status_t i2s_out_pulser_status = PASSTHROUGH;
                                                                 ^~~~~~~~~~~
/root/ESP32/main/i2s_out.c: In function 'i2s_clear_dma_buffer':
/root/ESP32/main/i2s_out.c:78:26: error: 'I2S_OUT_DMABUF_LEN' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
 #define DMA_SAMPLE_COUNT I2S_OUT_DMABUF_LEN / I2S_SAMPLE_SIZE /* number of samples per buffer */
                          ^~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:190:25: note: in expansion of macro 'DMA_SAMPLE_COUNT'
     for (int i = 0; i < DMA_SAMPLE_COUNT; i++) {
                         ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:78:26: note: each undeclared identifier is reported only once for each function it appears in
 #define DMA_SAMPLE_COUNT I2S_OUT_DMABUF_LEN / I2S_SAMPLE_SIZE /* number of samples per buffer */
                          ^~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:190:25: note: in expansion of macro 'DMA_SAMPLE_COUNT'
     for (int i = 0; i < DMA_SAMPLE_COUNT; i++) {
                         ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c: In function 'i2s_clear_o_dma_buffers':
/root/ESP32/main/i2s_out.c:200:37: error: 'I2S_OUT_DMABUF_COUNT' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
     for (int buf_idx = 0; buf_idx < I2S_OUT_DMABUF_COUNT; buf_idx++) {
                                     ^~~~~~~~~~~~~~~~~~~~
                                     I2S_OUT_DATA
/root/ESP32/main/i2s_out.c:205:45: error: 'I2S_OUT_DMABUF_LEN' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
         o_dma.desc[buf_idx]->length       = I2S_OUT_DMABUF_LEN;
                                             ^~~~~~~~~~~~~~~~~~
                                             I2S_OUT_DATA
/root/ESP32/main/i2s_out.c: In function 'i2s_out_gpio_shiftout':
/root/ESP32/main/i2s_out.c:235:25: error: 'I2S_OUT_NUM_BITS' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
     for (int i = 0; i < I2S_OUT_NUM_BITS; i++) {
                         ^~~~~~~~~~~~~~~~
                         I2S_OUT_DATA
/root/ESP32/main/i2s_out.c: In function 'i2s_fillout_dma_buffer':
/root/ESP32/main/i2s_out.c:340:34: error: 'STEPPING' undeclared (first use in this function); did you mean 'PENDING'?
     if (i2s_out_pulser_status == STEPPING) {
                                  ^~~~~~~~
                                  PENDING
/root/ESP32/main/i2s_out.c:78:26: error: 'I2S_OUT_DMABUF_LEN' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
 #define DMA_SAMPLE_COUNT I2S_OUT_DMABUF_LEN / I2S_SAMPLE_SIZE /* number of samples per buffer */
                          ^~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:352:32: note: in expansion of macro 'DMA_SAMPLE_COUNT'
         while (o_dma.rw_pos < (DMA_SAMPLE_COUNT - SAMPLE_SAFE_COUNT)) {
                                ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:79:33: error: 'I2S_OUT_USEC_PER_PULSE' undeclared (first use in this function)
 #define SAMPLE_SAFE_COUNT (20 / I2S_OUT_USEC_PER_PULSE)       /* prevent buffer overrun (GRBL's $0 should be less than or equal 20) */
                                 ^~~~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:352:51: note: in expansion of macro 'SAMPLE_SAFE_COUNT'
         while (o_dma.rw_pos < (DMA_SAMPLE_COUNT - SAMPLE_SAFE_COUNT)) {
                                                   ^~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:358:44: warning: comparison between pointer and integer
                     if (i2s_out_pulse_func != NULL) {
                                            ^~
/root/ESP32/main/i2s_out.c:361:25: error: called object 'i2s_out_pulse_func' is not a function or function pointer
                         i2s_out_pulse_func();             // should be pushed into buffer max DMA_SAMPLE_SAFE_COUNT
                         ^~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:120:38: note: declared here
 static volatile i2s_out_pulse_func_t i2s_out_pulse_func;
                                      ^~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:365:54: error: 'WAITING' undeclared (first use in this function)
                         if (i2s_out_pulser_status == WAITING) {
                                                      ^~~~~~~
/root/ESP32/main/i2s_out.c: In function 'i2s_out_intr_handler':
/root/ESP32/main/i2s_out.c:438:42: error: 'STEPPING' undeclared (first use in this function); did you mean 'PENDING'?
             if (i2s_out_pulser_status == STEPPING) {
                                          ^~~~~~~~
                                          PENDING
/root/ESP32/main/i2s_out.c:78:26: error: 'I2S_OUT_DMABUF_LEN' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
 #define DMA_SAMPLE_COUNT I2S_OUT_DMABUF_LEN / I2S_SAMPLE_SIZE /* number of samples per buffer */
                          ^~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:442:33: note: in expansion of macro 'DMA_SAMPLE_COUNT'
             for (int i = 0; i < DMA_SAMPLE_COUNT; i++) {
                                 ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c: In function 'i2sOutTask':
/root/ESP32/main/i2s_out.c:474:38: error: 'STEPPING' undeclared (first use in this function); did you mean 'PENDING'?
         if (i2s_out_pulser_status == STEPPING) {
                                      ^~~~~~~~
                                      PENDING
/root/ESP32/main/i2s_out.c:487:45: error: 'WAITING' undeclared (first use in this function)
         } else if (i2s_out_pulser_status == WAITING) {
                                             ^~~~~~~
/root/ESP32/main/i2s_out.c: In function 'i2s_out_delay':
/root/ESP32/main/i2s_out.c:523:22: error: 'I2S_OUT_USEC_PER_PULSE' undeclared (first use in this function)
         ets_delay_us(I2S_OUT_USEC_PER_PULSE * 2);
                      ^~~~~~~~~~~~~~~~~~~~~~
In file included from /root/ESP32/main/i2s_out.c:58:
/root/ESP32/main/i2s_out.c:527:15: error: 'I2S_OUT_DELAY_MS' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
         delay(I2S_OUT_DELAY_MS);
               ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s.h:29:32: note: in definition of macro 'delay'
 #define delay(ms) hal.delay_ms(ms, 0);
                                ^~
/root/ESP32/main/i2s_out.c: In function 'i2s_out_push_sample':
/root/ESP32/main/i2s_out.c:79:33: error: 'I2S_OUT_USEC_PER_PULSE' undeclared (first use in this function)
 #define SAMPLE_SAFE_COUNT (20 / I2S_OUT_USEC_PER_PULSE)       /* prevent buffer overrun (GRBL's $0 should be less than or equal 20) */
                                 ^~~~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:556:15: note: in expansion of macro 'SAMPLE_SAFE_COUNT'
     if (num > SAMPLE_SAFE_COUNT) {
               ^~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c: At top level:
/root/ESP32/main/i2s_out.c:570:1: warning: data definition has no type or storage class
 i2s_out_pulser_status_t IRAM_ATTR i2s_out_get_pulser_status (void)
 ^~~~~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:570:1: error: type defaults to 'int' in declaration of 'i2s_out_pulser_status_t' [-Werror=implicit-int]
/root/ESP32/main/i2s_out.c:570:35: error: expected ',' or ';' before 'i2s_out_get_pulser_status'
 i2s_out_pulser_status_t IRAM_ATTR i2s_out_get_pulser_status (void)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c: In function 'i2s_out_set_passthrough':
/root/ESP32/main/i2s_out.c:582:34: error: 'STEPPING' undeclared (first use in this function); did you mean 'PENDING'?
     if (i2s_out_pulser_status == STEPPING) {
                                  ^~~~~~~~
                                  PENDING
/root/ESP32/main/i2s_out.c:583:33: error: 'WAITING' undeclared (first use in this function)
         i2s_out_pulser_status = WAITING;  // Start stopping the pulser
                                 ^~~~~~~
In file included from /root/ESP32/main/i2s_out.c:58:
/root/ESP32/main/i2s_out.c:584:15: error: 'I2S_OUT_DELAY_MS' undeclared (first use in this function); did you mean 'I2S_OUT_DATA'?
         delay(I2S_OUT_DELAY_MS);
               ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s.h:29:32: note: in definition of macro 'delay'
 #define delay(ms) hal.delay_ms(ms, 0);
                                ^~
/root/ESP32/main/i2s_out.c: In function 'i2s_out_set_stepping':
/root/ESP32/main/i2s_out.c:593:34: error: 'STEPPING' undeclared (first use in this function); did you mean 'PENDING'?
     if (i2s_out_pulser_status == STEPPING) {
                                  ^~~~~~~~
                                  PENDING
/root/ESP32/main/i2s_out.c:599:34: error: 'WAITING' undeclared (first use in this function)
     if (i2s_out_pulser_status == WAITING) {
                                  ^~~~~~~
In file included from /root/ESP32/main/i2s_out.c:58:
/root/ESP32/main/i2s_out.c:603:19: error: 'I2S_OUT_DELAY_DMABUF_MS' undeclared (first use in this function)
             delay(I2S_OUT_DELAY_DMABUF_MS);
                   ^~~~~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s.h:29:32: note: in definition of macro 'delay'
 #define delay(ms) hal.delay_ms(ms, 0);
                                ^~
/root/ESP32/main/i2s_out.c: At top level:
/root/ESP32/main/i2s_out.c:636:44: error: unknown type name 'i2s_out_pulse_func_t'; did you mean 'i2s_out_dma_t'?
 void IRAM_ATTR i2s_out_set_pulse_callback (i2s_out_pulse_func_t func)
                                            ^~~~~~~~~~~~~~~~~~~~
                                            i2s_out_dma_t
/root/ESP32/main/i2s_out.c: In function 'i2s_out_reset':
/root/ESP32/main/i2s_out.c:645:34: error: 'STEPPING' undeclared (first use in this function); did you mean 'PENDING'?
     if (i2s_out_pulser_status == STEPPING) {
                                  ^~~~~~~~
                                  PENDING
/root/ESP32/main/i2s_out.c:648:41: error: 'WAITING' undeclared (first use in this function)
     } else if (i2s_out_pulser_status == WAITING) {
                                         ^~~~~~~
/root/ESP32/main/i2s_out.c: At top level:
/root/ESP32/main/i2s_out.c:661:31: error: unknown type name 'i2s_out_init_t'; did you mean 'i2s_out_dma_t'?
 bool IRAM_ATTR i2s_out_init2 (i2s_out_init_t init_param)
                               ^~~~~~~~~~~~~~
                               i2s_out_dma_t
/root/ESP32/main/i2s_out.c: In function 'i2s_out_init':
/root/ESP32/main/i2s_out.c:894:5: error: unknown type name 'i2s_out_init_t'; did you mean 'i2s_out_dma_t'?
     i2s_out_init_t default_param = {
     ^~~~~~~~~~~~~~
     i2s_out_dma_t
/root/ESP32/main/i2s_out.c:895:9: error: field name not in record or union initializer
         .ws_pin       = I2S_OUT_WS,
         ^
/root/ESP32/main/i2s_out.c:895:9: note: (near initialization for 'default_param')
/root/ESP32/main/i2s_out.c:896:9: error: field name not in record or union initializer
         .bck_pin      = I2S_OUT_BCK,
         ^
/root/ESP32/main/i2s_out.c:896:9: note: (near initialization for 'default_param')
In file included from /root/ESP32/main/driver.h:243,
                 from /root/ESP32/main/i2s_out.c:43:
/root/ESP32/main/BlackBox32X.h:32:21: warning: excess elements in scalar initializer
 #define I2S_OUT_BCK GPIO_NUM_16
                     ^~~~~~~~~~~
/root/ESP32/main/i2s_out.c:896:25: note: in expansion of macro 'I2S_OUT_BCK'
         .bck_pin      = I2S_OUT_BCK,
                         ^~~~~~~~~~~
/root/ESP32/main/BlackBox32X.h:32:21: note: (near initialization for 'default_param')
 #define I2S_OUT_BCK GPIO_NUM_16
                     ^~~~~~~~~~~
/root/ESP32/main/i2s_out.c:896:25: note: in expansion of macro 'I2S_OUT_BCK'
         .bck_pin      = I2S_OUT_BCK,
                         ^~~~~~~~~~~
/root/ESP32/main/i2s_out.c:897:9: error: field name not in record or union initializer
         .data_pin     = I2S_OUT_DATA,
         ^
/root/ESP32/main/i2s_out.c:897:9: note: (near initialization for 'default_param')
In file included from /root/ESP32/main/driver.h:243,
                 from /root/ESP32/main/i2s_out.c:43:
/root/ESP32/main/BlackBox32X.h:34:22: warning: excess elements in scalar initializer
 #define I2S_OUT_DATA GPIO_NUM_21
                      ^~~~~~~~~~~
/root/ESP32/main/i2s_out.c:897:25: note: in expansion of macro 'I2S_OUT_DATA'
         .data_pin     = I2S_OUT_DATA,
                         ^~~~~~~~~~~~
/root/ESP32/main/BlackBox32X.h:34:22: note: (near initialization for 'default_param')
 #define I2S_OUT_DATA GPIO_NUM_21
                      ^~~~~~~~~~~
/root/ESP32/main/i2s_out.c:897:25: note: in expansion of macro 'I2S_OUT_DATA'
         .data_pin     = I2S_OUT_DATA,
                         ^~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:898:9: error: field name not in record or union initializer
         .pulse_func   = NULL,
         ^
/root/ESP32/main/i2s_out.c:898:9: note: (near initialization for 'default_param')
/root/ESP32/main/i2s_out.c:898:25: warning: excess elements in scalar initializer
         .pulse_func   = NULL,
                         ^~~~
/root/ESP32/main/i2s_out.c:898:25: note: (near initialization for 'default_param')
/root/ESP32/main/i2s_out.c:899:9: error: field name not in record or union initializer
         .pulse_period = I2S_OUT_USEC_PER_PULSE,
         ^
/root/ESP32/main/i2s_out.c:899:9: note: (near initialization for 'default_param')
/root/ESP32/main/i2s_out.c:899:25: error: 'I2S_OUT_USEC_PER_PULSE' undeclared (first use in this function)
         .pulse_period = I2S_OUT_USEC_PER_PULSE,
                         ^~~~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:899:25: warning: excess elements in scalar initializer
/root/ESP32/main/i2s_out.c:899:25: note: (near initialization for 'default_param')
/root/ESP32/main/i2s_out.c:900:9: error: field name not in record or union initializer
         .init_val     = I2S_OUT_INIT_VAL,
         ^
/root/ESP32/main/i2s_out.c:900:9: note: (near initialization for 'default_param')
/root/ESP32/main/i2s_out.c:885:30: warning: excess elements in scalar initializer
 #    define I2S_OUT_INIT_VAL 0
                              ^
/root/ESP32/main/i2s_out.c:900:25: note: in expansion of macro 'I2S_OUT_INIT_VAL'
         .init_val     = I2S_OUT_INIT_VAL,
                         ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:885:30: note: (near initialization for 'default_param')
 #    define I2S_OUT_INIT_VAL 0
                              ^
/root/ESP32/main/i2s_out.c:900:25: note: in expansion of macro 'I2S_OUT_INIT_VAL'
         .init_val     = I2S_OUT_INIT_VAL,
                         ^~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:903:12: error: implicit declaration of function 'i2s_out_init2'; did you mean 'i2s_out_init'? [-Werror=implicit-function-declaration]
     return i2s_out_init2(default_param);
            ^~~~~~~~~~~~~
            i2s_out_init
At top level:
/root/ESP32/main/i2s_out.c:462:23: warning: 'i2sOutTask' defined but not used [-Wunused-function]
 static void IRAM_ATTR i2sOutTask(void* parameter)
                       ^~~~~~~~~~
/root/ESP32/main/i2s_out.c:410:23: warning: 'i2s_out_intr_handler' defined but not used [-Wunused-function]
 static void IRAM_ATTR i2s_out_intr_handler (void *arg)
                       ^~~~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:180:23: warning: 'i2s_out_reset_fifo' defined but not used [-Wunused-function]
 static void IRAM_ATTR i2s_out_reset_fifo (void)
                       ^~~~~~~~~~~~~~~~~~
/root/ESP32/main/i2s_out.c:90:22: warning: 'i2s_out_isr_handle' defined but not used [-Wunused-variable]
 static intr_handle_t i2s_out_isr_handle;
                      ^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [esp-idf/main/CMakeFiles/__idf_main.dir/build.make:169: esp-idf/main/CMakeFiles/__idf_main.dir/i2s_out.c.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:4934: esp-idf/main/CMakeFiles/__idf_main.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
make failed with exit code 2
root@firmwarebuild:~/ESP32#

What am I doing wrong (: or is the I2S code somewhere outside a "if" where it should have been inside?

Effect of speed and acceleration settings

Hello, I am also a fan of grbl. After I saw the project of grblhal, I was very interested because I have done similar things in private. I want to ask, the speed and acceleration of the motor can be set. If I set the maximum speed to 20000, the acceleration to 6000, and the speed during slicing to 20000, can grblhal work normally?

Can't compile for Corexy

I've managed to get most of the way through the build but it stops at the end saying
c:\esp\esp-idf\esp32\build/../main/grbl/grbllib.c:220: undefined reference to `corexy_init'

I've got no idea how to fix this....... help!

Capture

SOLVED: Question about I2S and I2C

Hallo
I'm trying to create map file for a MKS Tinybee board.
I assigned GPIO pin at X_lim, Y_lim, Z_lim, A_lim, B_lim, Probe, Feed Hold and Cycle Start and work well.
I use the I2S pin for the stepper motor (XYZAB) and all work well.
I use the I2S pin also for the other signals (flood, mist ,spindle enable and spindle direction) but not work.
I think, but I'm not sure, that I2S is dedicated only to stepper.
Now I will try to connect this signals with I2C IOEXPAND (I order the adapter), and I would like to change the default I2C pins (GPIO 22 (SCL) and GPIO 21 (SDA)) with GPIO 4 (SCL) and GPIO 0 (SDA), it's possible?
Every answer is appreciated. Thank's

Invert Y Axis and A axis

Hello, I need a suggestion on how to create a function in settings to flip pins from Y axis to A axis.

Example: $499=0 (Normal mode)
#define Y_ENABLE_PIN I2SO(4)
#define Y_STEP_PIN I2SO(5)
#define Y_DIRECTION_PIN I2SO(6)
#define Y_LIMIT_PIN GPIO_NUM_35
/ /Define ganged axis or A axis step pulse and step direction output pins.
#if N_ABC_MOTORS > 0
#define M3_AVAILABLE
#define M3_ENABLE_PIN I2SO(7)
#define M3_STEP_PIN I2SO(8)
#define M3_DIRECTION_PIN I2SO(9)
#endif

When changing the setting invert the pins
Example: $499=1 (Invert Y and A axis)
#define Y_ENABLE_PIN I2SO(7)
#define Y_STEP_PIN I2SO(8)
#define Y_DIRECTION_PIN I2SO(9)
#define Y_LIMIT_PIN GPIO_NUM_35
/ /Define ganged axis or A axis step pulse and step direction output pins.
#if N_ABC_MOTORS > 0
#define M3_AVAILABLE
#define M3_ENABLE_PIN I2SO(4)
#define M3_STEP_PIN I2SO(5)
#define M3_DIRECTION_PIN I2SO(6)
#endif

In this way, using ioSender, I can use a probe on the rotating axis on cylindrical people, being able to map the probe.

warning "legacy timer group driver is deprecated, please migrate to driver/gptimer.h"

Dear Tjerreio,

This is an error with the esp-idf latest.
The older version was imcompatable with the atest updates UBUNtu 2022.4.
So I tried the esp-idf latest.

jan@jan-LubuntuESP32:~/esp/esp-idf/examples/ESP32$ idf.py build
Executing action: all (aliases: build)
Running cmake in directory /home/jan/esp/esp-idf/examples/ESP32/build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DIDF_TARGET=esp32 -DCCACHE_ENABLE=0 /home/jan/esp/esp-idf/examples/ESP32"...
-- Found Git: /usr/bin/git (found version "2.34.1")
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/jan/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/jan/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/jan/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32
-- Project sdkconfig file /home/jan/esp/esp-idf/examples/ESP32/sdkconfig
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of time_t
-- Check size of time_t - done
-- Found Python3: /home/jan/.espressif/python_env/idf5.1_py3.10_env/bin/python (found version "3.10.4") found components: Interpreter
-- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS
-- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS - Success
-- App "grbl" version: 3078a23-dirty
-- Adding linker script /home/jan/esp/esp-idf/examples/ESP32/build/esp-idf/esp_system/ld/memory.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_system/ld/esp32/sections.ld.in
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script /home/jan/esp/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
-- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_netif esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_serial_slave_link esp_system esp_timer esp_wifi espcoredump esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash openthread partition_table perfmon protobuf-c protocomm pthread sdmmc soc spi_flash spiffs tcp_transport tinyusb ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa
-- Component paths: /home/jan/esp/esp-idf/components/app_trace /home/jan/esp/esp-idf/components/app_update /home/jan/esp/esp-idf/components/bootloader /home/jan/esp/esp-idf/components/bootloader_support /home/jan/esp/esp-idf/components/bt /home/jan/esp/esp-idf/components/cmock /home/jan/esp/esp-idf/components/console /home/jan/esp/esp-idf/components/cxx /home/jan/esp/esp-idf/components/driver /home/jan/esp/esp-idf/components/efuse /home/jan/esp/esp-idf/components/esp-tls /home/jan/esp/esp-idf/components/esp_adc /home/jan/esp/esp-idf/components/esp_app_format /home/jan/esp/esp-idf/components/esp_common /home/jan/esp/esp-idf/components/esp_eth /home/jan/esp/esp-idf/components/esp_event /home/jan/esp/esp-idf/components/esp_gdbstub /home/jan/esp/esp-idf/components/esp_hid /home/jan/esp/esp-idf/components/esp_http_client /home/jan/esp/esp-idf/components/esp_http_server /home/jan/esp/esp-idf/components/esp_https_ota /home/jan/esp/esp-idf/components/esp_https_server /home/jan/esp/esp-idf/components/esp_hw_support /home/jan/esp/esp-idf/components/esp_lcd /home/jan/esp/esp-idf/components/esp_local_ctrl /home/jan/esp/esp-idf/components/esp_netif /home/jan/esp/esp-idf/components/esp_phy /home/jan/esp/esp-idf/components/esp_pm /home/jan/esp/esp-idf/components/esp_psram /home/jan/esp/esp-idf/components/esp_ringbuf /home/jan/esp/esp-idf/components/esp_rom /home/jan/esp/esp-idf/components/esp_serial_slave_link /home/jan/esp/esp-idf/components/esp_system /home/jan/esp/esp-idf/components/esp_timer /home/jan/esp/esp-idf/components/esp_wifi /home/jan/esp/esp-idf/components/espcoredump /home/jan/esp/esp-idf/components/esptool_py /home/jan/esp/esp-idf/components/fatfs /home/jan/esp/esp-idf/components/freertos /home/jan/esp/esp-idf/components/hal /home/jan/esp/esp-idf/components/heap /home/jan/esp/esp-idf/components/http_parser /home/jan/esp/esp-idf/components/idf_test /home/jan/esp/esp-idf/components/ieee802154 /home/jan/esp/esp-idf/components/json /home/jan/esp/esp-idf/components/log /home/jan/esp/esp-idf/components/lwip /home/jan/esp/esp-idf/examples/ESP32/main /home/jan/esp/esp-idf/components/mbedtls /home/jan/esp/esp-idf/components/mqtt /home/jan/esp/esp-idf/components/newlib /home/jan/esp/esp-idf/components/nvs_flash /home/jan/esp/esp-idf/components/openthread /home/jan/esp/esp-idf/components/partition_table /home/jan/esp/esp-idf/components/perfmon /home/jan/esp/esp-idf/components/protobuf-c /home/jan/esp/esp-idf/components/protocomm /home/jan/esp/esp-idf/components/pthread /home/jan/esp/esp-idf/components/sdmmc /home/jan/esp/esp-idf/components/soc /home/jan/esp/esp-idf/components/spi_flash /home/jan/esp/esp-idf/components/spiffs /home/jan/esp/esp-idf/components/tcp_transport /home/jan/esp/esp-idf/components/tinyusb /home/jan/esp/esp-idf/components/ulp /home/jan/esp/esp-idf/components/unity /home/jan/esp/esp-idf/components/usb /home/jan/esp/esp-idf/components/vfs /home/jan/esp/esp-idf/components/wear_levelling /home/jan/esp/esp-idf/components/wifi_provisioning /home/jan/esp/esp-idf/components/wpa_supplicant /home/jan/esp/esp-idf/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jan/esp/esp-idf/examples/ESP32/build
Running ninja in directory /home/jan/esp/esp-idf/examples/ESP32/build
Executing "ninja all"...
[5/1177] Generating ../../partition_table/partition-table.binPartition table binary generated. Contents:


ESP-IDF Partition Table

Name, Type, SubType, Offset, Size, Flags

nvs,data,nvs,0x9000,24K,
phy_init,data,phy,0xf000,4K,
factory,app,factory,0x10000,1M,
grbl,data,153,0x110000,4K,
storage,data,spiffs,0x111000,960K,


[309/1177] Performing configure step for 'bootloader'-- Found Git: /usr/bin/git (found version "2.34.1")
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/jan/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/jan/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/jan/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32
-- Project sdkconfig file /home/jan/esp/esp-idf/examples/ESP32/sdkconfig
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of time_t
-- Check size of time_t - done
-- Adding linker script /home/jan/esp/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
-- App "bootloader" version: v5.1-dev-437-g5c1044d84d
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script /home/jan/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script /home/jan/esp/esp-idf/components/bootloader/subproject/main/ld/esp32/bootloader.ld
-- Adding linker script /home/jan/esp/esp-idf/components/bootloader/subproject/main/ld/esp32/bootloader.rom.ld
-- Components: bootloader bootloader_support efuse esp_app_format esp_common esp_hw_support esp_rom esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa
-- Component paths: /home/jan/esp/esp-idf/components/bootloader /home/jan/esp/esp-idf/components/bootloader_support /home/jan/esp/esp-idf/components/efuse /home/jan/esp/esp-idf/components/esp_app_format /home/jan/esp/esp-idf/components/esp_common /home/jan/esp/esp-idf/components/esp_hw_support /home/jan/esp/esp-idf/components/esp_rom /home/jan/esp/esp-idf/components/esp_system /home/jan/esp/esp-idf/components/esptool_py /home/jan/esp/esp-idf/components/freertos /home/jan/esp/esp-idf/components/hal /home/jan/esp/esp-idf/components/log /home/jan/esp/esp-idf/components/bootloader/subproject/main /home/jan/esp/esp-idf/components/bootloader/subproject/components/micro-ecc /home/jan/esp/esp-idf/components/newlib /home/jan/esp/esp-idf/components/partition_table /home/jan/esp/esp-idf/components/soc /home/jan/esp/esp-idf/components/spi_flash /home/jan/esp/esp-idf/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jan/esp/esp-idf/examples/ESP32/build/bootloader
[100/101] Generating binary image from built executableesptool.py v4.2.1
Creating esp32 image...
Merged 1 ELF section
Successfully created esp32 image.
Generated /home/jan/esp/esp-idf/examples/ESP32/build/bootloader/bootloader.bin
[101/101] cd /home/jan/esp/esp-idf/examples/ESP32/build/bootl...an/esp/esp-idf/examples/ESP32/build/bootloader/bootloader.binBootloader binary size 0x4500 bytes. 0x2b00 bytes (38%) free.
[892/1177] Building C object esp-idf/bt/CMakeFiles/__idf_bt.dir/host/bluedroid/hci/hci_layer.c.obj/home/jan/esp/esp-idf/components/bt/host/bluedroid/hci/hci_layer.c: In function 'command_timed_out':
/home/jan/esp/esp-idf/components/bt/host/bluedroid/hci/hci_layer.c:406:29: warning: unused variable 'metadata' [-Wunused-variable]
406 | hci_cmd_metadata_t *metadata = (hci_cmd_metadata_t *)(wait_entry->data);
| ^~~~~~~~
[1137/1177] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/esp32-hal-uart.c.objFAILED: esp-idf/main/CMakeFiles/__idf_main.dir/esp32-hal-uart.c.obj
/home/jan/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc -DBOARD_BDRING_V4 -DGRBL_ESP32 -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DOVERRIDE_MY_MACHINE -DUNITY_INCLUDE_CONFIG_H -I/home/jan/esp/esp-idf/examples/ESP32/build/config -I/home/jan/esp/esp-idf/examples/ESP32/main -I/home/jan/esp/esp-idf/components/newlib/platform_include -I/home/jan/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/home/jan/esp/esp-idf/components/freertos/esp_additions/include/freertos -I/home/jan/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -I/home/jan/esp/esp-idf/components/freertos/esp_additions/include -I/home/jan/esp/esp-idf/components/esp_hw_support/include -I/home/jan/esp/esp-idf/components/esp_hw_support/include/soc -I/home/jan/esp/esp-idf/components/esp_hw_support/include/soc/esp32 -I/home/jan/esp/esp-idf/components/esp_hw_support/port/esp32/. -I/home/jan/esp/esp-idf/components/esp_hw_support/port/esp32/private_include -I/home/jan/esp/esp-idf/components/heap/include -I/home/jan/esp/esp-idf/components/log/include -I/home/jan/esp/esp-idf/components/soc/include -I/home/jan/esp/esp-idf/components/soc/esp32/. -I/home/jan/esp/esp-idf/components/soc/esp32/include -I/home/jan/esp/esp-idf/components/hal/esp32/include -I/home/jan/esp/esp-idf/components/hal/include -I/home/jan/esp/esp-idf/components/hal/platform_port/include -I/home/jan/esp/esp-idf/components/esp_rom/include -I/home/jan/esp/esp-idf/components/esp_rom/include/esp32 -I/home/jan/esp/esp-idf/components/esp_rom/esp32 -I/home/jan/esp/esp-idf/components/esp_common/include -I/home/jan/esp/esp-idf/components/esp_system/include -I/home/jan/esp/esp-idf/components/esp_system/port/soc -I/home/jan/esp/esp-idf/components/esp_system/port/include/private -I/home/jan/esp/esp-idf/components/xtensa/include -I/home/jan/esp/esp-idf/components/xtensa/esp32/include -I/home/jan/esp/esp-idf/components/lwip/include -I/home/jan/esp/esp-idf/components/lwip/include/apps -I/home/jan/esp/esp-idf/components/lwip/include/apps/sntp -I/home/jan/esp/esp-idf/components/lwip/lwip/src/include -I/home/jan/esp/esp-idf/components/lwip/port/esp32/include -I/home/jan/esp/esp-idf/components/lwip/port/esp32/include/arch -I/home/jan/esp/esp-idf/components/esp_ringbuf/include -I/home/jan/esp/esp-idf/components/efuse/include -I/home/jan/esp/esp-idf/components/efuse/esp32/include -I/home/jan/esp/esp-idf/components/driver/include -I/home/jan/esp/esp-idf/components/driver/deprecated -I/home/jan/esp/esp-idf/components/driver/esp32/include -I/home/jan/esp/esp-idf/components/esp_pm/include -I/home/jan/esp/esp-idf/components/mbedtls/port/include -I/home/jan/esp/esp-idf/components/mbedtls/mbedtls/include -I/home/jan/esp/esp-idf/components/mbedtls/mbedtls/library -I/home/jan/esp/esp-idf/components/mbedtls/esp_crt_bundle/include -I/home/jan/esp/esp-idf/components/esp_app_format/include -I/home/jan/esp/esp-idf/components/bootloader_support/include -I/home/jan/esp/esp-idf/components/bootloader_support/bootloader_flash/include -I/home/jan/esp/esp-idf/components/app_update/include -I/home/jan/esp/esp-idf/components/spi_flash/include -I/home/jan/esp/esp-idf/components/pthread/include -I/home/jan/esp/esp-idf/components/esp_timer/include -I/home/jan/esp/esp-idf/components/app_trace/include -I/home/jan/esp/esp-idf/components/esp_event/include -I/home/jan/esp/esp-idf/components/nvs_flash/include -I/home/jan/esp/esp-idf/components/esp_phy/include -I/home/jan/esp/esp-idf/components/esp_phy/esp32/include -I/home/jan/esp/esp-idf/components/vfs/include -I/home/jan/esp/esp-idf/components/esp_netif/include -I/home/jan/esp/esp-idf/components/wpa_supplicant/include -I/home/jan/esp/esp-idf/components/wpa_supplicant/port/include -I/home/jan/esp/esp-idf/components/wpa_supplicant/esp_supplicant/include -I/home/jan/esp/esp-idf/components/esp_wifi/include -I/home/jan/esp/esp-idf/components/bt/include/esp32/include -I/home/jan/esp/esp-idf/components/bt/common/osi/include -I/home/jan/esp/esp-idf/components/bt/common/api/include/api -I/home/jan/esp/esp-idf/components/bt/common/btc/profile/esp/blufi/include -I/home/jan/esp/esp-idf/components/bt/common/btc/profile/esp/include -I/home/jan/esp/esp-idf/components/bt/host/bluedroid/api/include/api -I/home/jan/esp/esp-idf/components/bt/porting/ext/tinycrypt/include -I/home/jan/esp/esp-idf/components/unity/include -I/home/jan/esp/esp-idf/components/unity/unity/src -I/home/jan/esp/esp-idf/components/cmock/CMock/src -I/home/jan/esp/esp-idf/components/console -I/home/jan/esp/esp-idf/components/http_parser -I/home/jan/esp/esp-idf/components/esp-tls -I/home/jan/esp/esp-idf/components/esp-tls/esp-tls-crypto -I/home/jan/esp/esp-idf/components/esp_adc/include -I/home/jan/esp/esp-idf/components/esp_adc/interface -I/home/jan/esp/esp-idf/components/esp_adc/esp32/include -I/home/jan/esp/esp-idf/components/esp_adc/deprecated/include -I/home/jan/esp/esp-idf/components/esp_eth/include -I/home/jan/esp/esp-idf/components/esp_gdbstub/include -I/home/jan/esp/esp-idf/components/esp_gdbstub/xtensa -I/home/jan/esp/esp-idf/components/esp_gdbstub/esp32 -I/home/jan/esp/esp-idf/components/esp_hid/include -I/home/jan/esp/esp-idf/components/tcp_transport/include -I/home/jan/esp/esp-idf/components/esp_http_client/include -I/home/jan/esp/esp-idf/components/esp_http_server/include -I/home/jan/esp/esp-idf/components/esp_https_ota/include -I/home/jan/esp/esp-idf/components/esp_lcd/include -I/home/jan/esp/esp-idf/components/esp_lcd/interface -I/home/jan/esp/esp-idf/components/protobuf-c/protobuf-c -I/home/jan/esp/esp-idf/components/protocomm/include/common -I/home/jan/esp/esp-idf/components/protocomm/include/security -I/home/jan/esp/esp-idf/components/protocomm/include/transports -I/home/jan/esp/esp-idf/components/esp_local_ctrl/include -I/home/jan/esp/esp-idf/components/esp_psram/include -I/home/jan/esp/esp-idf/components/sdmmc/include -I/home/jan/esp/esp-idf/components/esp_serial_slave_link/include -I/home/jan/esp/esp-idf/components/espcoredump/include -I/home/jan/esp/esp-idf/components/espcoredump/include/port/xtensa -I/home/jan/esp/esp-idf/components/wear_levelling/include -I/home/jan/esp/esp-idf/components/fatfs/diskio -I/home/jan/esp/esp-idf/components/fatfs/vfs -I/home/jan/esp/esp-idf/components/fatfs/src -I/home/jan/esp/esp-idf/components/idf_test/include -I/home/jan/esp/esp-idf/components/idf_test/include/esp32 -I/home/jan/esp/esp-idf/components/ieee802154/include -I/home/jan/esp/esp-idf/components/json/cJSON -I/home/jan/esp/esp-idf/components/mqtt/esp-mqtt/include -I/home/jan/esp/esp-idf/components/perfmon/include -I/home/jan/esp/esp-idf/components/spiffs/include -I/home/jan/esp/esp-idf/components/ulp/ulp_common/include -I/home/jan/esp/esp-idf/components/ulp/ulp_common/include/esp32 -I/home/jan/esp/esp-idf/components/wifi_provisioning/include -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Os -freorder-blocks -fmacro-prefix-map=/home/jan/esp/esp-idf/examples/ESP32=. -fmacro-prefix-map=/home/jan/esp/esp-idf=/IDF -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -DconfigENABLE_FREERTOS_DEBUG_OCDAWARE=1 -std=gnu17 -Wno-old-style-declaration -D_GNU_SOURCE -DIDF_VER="v5.1-dev-437-g5c1044d84d" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -Wimplicit-fallthrough=1 -Wno-missing-field-initializers -Wno-maybe-uninitialized -Wno-stringop-truncation -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/esp32-hal-uart.c.obj -MF esp-idf/main/CMakeFiles/__idf_main.dir/esp32-hal-uart.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/esp32-hal-uart.c.obj -c /home/jan/esp/esp-idf/examples/ESP32/main/esp32-hal-uart.c
In file included from /home/jan/esp/esp-idf/examples/ESP32/main/driver.h:108,
from /home/jan/esp/esp-idf/examples/ESP32/main/esp32-hal-uart.h:27,
from /home/jan/esp/esp-idf/examples/ESP32/main/esp32-hal-uart.c:35:
/home/jan/esp/esp-idf/components/driver/deprecated/driver/timer.h:16:2: warning: #warning "legacy timer group driver is deprecated, please migrate to driver/gptimer.h" [-Wcpp]
16 | #warning "legacy timer group driver is deprecated, please migrate to driver/gptimer.h"
| ^~~~~~~
In file included from /home/jan/esp/esp-idf/examples/ESP32/main/driver.h:110,
from /home/jan/esp/esp-idf/examples/ESP32/main/esp32-hal-uart.h:27,
from /home/jan/esp/esp-idf/examples/ESP32/main/esp32-hal-uart.c:35:
/home/jan/esp/esp-idf/components/driver/deprecated/driver/rmt.h:18:2: warning: #warning "The legacy RMT driver is deprecated, please use driver/rmt_tx.h and/or driver/rmt_rx.h" [-Wcpp]

[COMPILATION ISSUE]cannot compile latest git

I think some sanity check are missing in latest git f91fe73 and may be more

if I compile with WiFi enabled but OPTION(SDcard "SD Card Streaming" OFF) (I forget to enable it)

../main/webui/commands.c: In function 'handle_job_status':
../main/webui/commands.c:1001:5: error: unknown type name 'sdcard_job_t'
     sdcard_job_t *job = sdcard_get_job_info();
     ^~~~~~~~~~~~
../main/webui/commands.c:1001:25: error: implicit declaration of function 'sdcard_get_job_info' [-Werror=implicit-function-declaration]
     sdcard_job_t *job = sdcard_get_job_info();
                         ^~~~~~~~~~~~~~~~~~~
../main/webui/commands.c:1001:25: warning: initialization of 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
../main/webui/commands.c:1044:77: error: request for member 'size' in something not a structure or union
                     ok &= !!cJSON_AddStringToObject(data, "total", uitoa(job->size));
                                                                             ^~
../main/webui/commands.c:1045:81: error: request for member 'pos' in something not a structure or union
                     ok &= !!cJSON_AddStringToObject(data, "processed", uitoa(job->pos));
                                                                                 ^~
../main/webui/commands.c:1047:70: error: request for member 'name' in something not a structure or union
                     ok &= !!cJSON_AddStringToObject(data, "name", job->name);
                                                                      ^~
../main/webui/commands.c: In function 'get_sd_status':
../main/webui/commands.c:1200:14: warning: unused variable 'refresh' [-Wunused-variable]
         bool refresh = !!get_arg(argc, argv, "REFRESH"), release = !!get_arg(argc, argv, "RELEASE");
              ^~~~~~~
../main/webui/commands.c:1208:64: error: implicit declaration of function 'sdcard_getfs'; did you mean 'state_get'? [-Werror=implicit-function-declaration]
         msg = hal.stream.type == StreamType_SDCard ? "Busy" : (sdcard_getfs() ? "SD card detected" : "Not available");
                                                                ^~~~~~~~~~~~
                                                                state_get
At top level:
../main/webui/commands.c:1229:22: warning: 'sd_print' defined but not used [-Wunused-function]
 static status_code_t sd_print (const struct webui_cmd_binding *command, uint_fast16_t argc, char **argv, bool json, bool isv3)
                      ^~~~~~~~
../main/webui/commands.c:1221:22: warning: 'get_sd_content' defined but not used [-Wunused-function]
 static status_code_t get_sd_content (const struct webui_cmd_binding *command, uint_fast16_t argc, char **argv, bool json, bool isv3)
                      ^~~~~~~~~~~~~~
../main/webui/commands.c:1194:22: warning: 'get_sd_status' defined but not used [-Wunused-function]
 static status_code_t get_sd_status (const struct webui_cmd_binding *command, uint_fast16_t argc, char **argv, bool json, bool isv3)
                      ^~~~~~~~~~~~~
cc1.exe: some warnings being treated as errors
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

compilation still failed if OPTION(SDcard "SD Card Streaming" ON) due to authentication
if OPTION(WebAuth "WebUI authentication" OFF)

../main/web/backend.c:812:19: error: 'login_handler_get' undeclared here (not in a function); did you mean 'sighandler_t'?
       .handler  = login_handler_get,
                   ^~~~~~~~~~~~~~~~~
                   sighandler_t
../main/web/backend.c:817:19: error: 'login_handler_post' undeclared here (not in a function); did you mean 'basic_handlers'?
       .handler  = login_handler_post,
                   ^~~~~~~~~~~~~~~~~~
                   basic_handlers
[60/65] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/webui/commands.c.obj
../main/webui/commands.c: In function 'get_sd_status':
../main/webui/commands.c:1200:14: warning: unused variable 'refresh' [-Wunused-variable]
         bool refresh = !!get_arg(argc, argv, "REFRESH"), release = !!get_arg(argc, argv, "RELEASE");
              ^~~~~~~
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

which should be solved in backend.c by adding compilation directives :

#if WEBUI_AUTH_ENABLE
    { .uri      = "/login",
      .method   = HTTP_GET,
      .handler  = login_handler_get,
      .user_ctx = NULL
    },
    { .uri      = "/login",
      .method   = HTTP_POST,
      .handler  = login_handler_post,
      .user_ctx = &file_server_data
    },
#endif

but unfortunatly

ents/log C:/Users/luc/Documents/GRBLHal/esp/esp-idf/components/bootloader/subproject/main C:/Users/luc/Documents/GRBLHal/esp/esp-idf/components/bootloader/subproject/components/micro-ecc C:/Users/luc/Documents/GRBLHal/esp/esp-idf/components/newlib C:/Users/luc/Documents/GRBLHal/esp/esp-idf/components/partition_table C:/Users/luc/Documents/GRBLHal/esp/esp-idf/components/soc C:/Users/luc/Documents/GRBLHal/esp/esp-idf/components/spi_flash C:/Users/luc/Documents/GRBLHal/esp/esp-idf/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/luc/Documents/GRBLHal/esp/esp-idf/ESP32/build/bootloader
[635/1319] Performing build step for 'bootloader'
[1/2] Linking C executable bootloader.elf
[2/2] Generating binary image from built executable
esptool.py v3.3.2-dev
Creating esp32 image...
Merged 1 ELF section
Successfully created esp32 image.
Generated C:/Users/luc/Documents/GRBLHal/esp/esp-idf/ESP32/build/bootloader/bootloader.bin
[1311/1319] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/webui/commands.c.obj
../main/webui/commands.c: In function 'get_sd_status':
../main/webui/commands.c:1200:14: warning: unused variable 'refresh' [-Wunused-variable]
         bool refresh = !!get_arg(argc, argv, "REFRESH"), release = !!get_arg(argc, argv, "RELEASE");
              ^~~~~~~
[1318/1319] Linking CXX executable grbl.elf
FAILED: grbl.elf
cmd.exe /C "cd . && C:\Users\luc\.espressif\tools\xtensa-esp32-elf\esp-2021r2-patch3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe  -mlongcalls -Wno-frame-address   @CMakeFiles\grbl.elf.rsp  -o grbl.elf  && cd ."
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x28): undefined reference to `sdcard_handler'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x38): undefined reference to `sdcard_upload_handler'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x88): undefined reference to `sdcard_handler'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x98): undefined reference to `sdcard_upload_handler'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

if OPTION(WebAuth "WebUI authentication" ON) there are another issues

[1314/1319] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/webui/commands.c.obj
../main/webui/commands.c: In function 'get_sd_status':
../main/webui/commands.c:1200:14: warning: unused variable 'refresh' [-Wunused-variable]
         bool refresh = !!get_arg(argc, argv, "REFRESH"), release = !!get_arg(argc, argv, "RELEASE");
              ^~~~~~~
[1318/1319] Linking CXX executable grbl.elf
FAILED: grbl.elf
cmd.exe /C "cd . && C:\Users\luc\.espressif\tools\xtensa-esp32-elf\esp-2021r2-patch3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe  -mlongcalls -Wno-frame-address   @CMakeFiles\grbl.elf.rsp  -o grbl.elf  && cd ."
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x28): undefined reference to `sdcard_handler'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x38): undefined reference to `sdcard_upload_handler'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x88): undefined reference to `sdcard_handler'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x98): undefined reference to `sdcard_upload_handler'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0xf8): undefined reference to `login_handler_get'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(backend.c.obj):(.rodata.basic_handlers+0x108): undefined reference to `login_handler_post'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(server.c.obj):(.literal.is_authorized+0x14): undefined reference to `get_auth_level'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(server.c.obj):(.literal.webui_init+0x14): undefined reference to `login_init'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(server.c.obj): in function `is_authorized':
c:\users\luc\documents\esp\esp-idf\esp32\build/../main/esp_webui/server.c:156: undefined reference to `get_auth_level'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(server.c.obj): in function `webui_http_command_handler':
c:\users\luc\documents\esp\esp-idf\esp32\build/../main/esp_webui/server.c:255: undefined reference to `get_auth_level'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: c:\users\luc\documents\esp\esp-idf\esp32\build/../main/esp_webui/server.c:299: undefined reference to `get_auth_level'
c:/users/luc/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/main/libmain.a(server.c.obj): in function `webui_init':
c:\users\luc\documents\esp\esp-idf\esp32\build/../main/esp_webui/server.c:677: undefined reference to `login_init'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

sorry I did not digged more - let me know if you want me to - but I get you will be faster than me as I am not yet familliar with your code, may be a missing commit ?

I enclose my config File for reference
CMakeLists.txt

[ESP32 WebUI] Missing Axis control in UI.

Hi,
I note that only X ,Y axis control is present in WebUI but the ESP3D project is ready to control up to 6 axis.
I check the code ( also the WebUI code ) and I find that the problem is a missing axis data on initial string.

With a simple add on the webui/commands.c I was able to view the other axis control and I don't found any issue using its.

image

This is the patch ( too small for a PR ).

diff --git a/main/webui/commands.c b/main/webui/commands.c
index 732cf09..be89b81 100644
--- a/main/webui/commands.c
+++ b/main/webui/commands.c
@@ -399,6 +399,19 @@ static bool get_firmware_spec (void)
     strcat(buf,"(AP mode)");
     #endif
     #endif
+    
+    strcat(buf, "# axis:");
+    #ifdef C_STEP_PIN
+    strcat(buf, "6");
+    #elif defined B_STEP_PIN
+    strcat(buf, "5");
+    #elif defined A_STEP_PIN
+    strcat(buf, "4");
+    #elif defined Z_STEP_PIN
+    strcat(buf, "3");
+    #elif
+    strcat(buf, "2");
+    #endif
 
     webui_print(buf);

Also I see it's missing in the webui plugin for non ESP32 boards.

L.

Help setting up MPG mode

I'm trying to setup the MPG mode and I'm having some issues to make it work. I've enabled every plugin that aparently is necessary to make it run (MPG Mode, Ethernet is needed or I get some undefined isr_mpg error on driver.c when running it), I've set the pins on my_machine_map.h as I'll show below, I have the MPG enable pin set to high (and I have checked with a multimeter that it's actually on) and when I run the GrblHAL I still am not getting the MPG message on the status report.

Am I missing something? I've read about the real time command to enable MPG mode but the documentation is outdated since the machine.h enable_keypad variable that is necessary to use it does not exist anymore. So, what am I missing here?

#if MPG_MODE_ENABLE
#define UART2_RX_PIN GPIO_NUM_16
#define UART2_TX_PIN GPIO_NUM_17
#define MPG_ENABLE_PIN GPIO_NUM_15
#endif

Error: "0x40080400: _init at ??:?"

How can I solve this error or problem.
0x40080400: _init at ??:? //What is the cause of these ??:? in the monitor

idf.py --version
ESP-IDF v4.4.1

uname -a
Linux jan-LubuntuEST32 5.15.0-39-generic #42-Ubuntu SMP Thu Jun 9 23:42:32 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

code -v
1.68.1

python3 --version
3.10.3

bdring/Grbl_Esp32#369

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html#step-2-get-esp-idf

https://github.com/grblHAL/ESP32

sudo apt-get install git wget flex bison gperf python3 python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

sudo usermod -a -G dialout $USER
sudo reboot

mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
cd ~/esp/esp-idf
./install.sh esp32

. $HOME/esp/esp-idf/export.sh

git clone --recursive git://github.com/grblHAL/ESP32
git pull --recurse-submodules
git submodule update --remote
git submodule update --init --recursive

cd ~/esp/esp-idf/ESP32
. $HOME/esp/esp-idf/export.sh

changed CMakeLists.txt, espduino "ON" and bdring "OFF".

idf.py build
pip3 install esptool
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
idf.py -p /dev/ttyUSB0 monitor

End of monitor file:

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:12784
load:0x40080400,len:3040
0x40080400: _init at ??:? //What is the cause of these ??:? in the monitor

entry 0x400805e4

GrblHAL 1.1f ['$' or '$HELP' for help]

Installation instuctions

I do seem to be able to get the installation instructions to work for the ESP32. The first issue I found that is an easy fix is

git clone -recursive git://github.com/grblHAL/ESP32

should be with two - ( --)

git clone --recursive git://github.com/grblHAL/ESP32

But the second one,...

I am not a big git user, so I do not really know what is expected here. On running
git submodule update --remote
I get this error
fatal: Needed a single revision
Unable to find current origin/master revision in submodule path 'components/asio/asio'

There have been a lot of changes to the repo structure lately , so I sure that this is just a small issue that has come from the move, but would you mind giving the build/ install instructions a look over for this board.

BlackBox X32 defaults / pin inversions

Hi!

So by default grblHAL has a couple pins inverted from our old standard (inhereted from Grbl days, existing machine profiles, users own grbl backups, etc), what is the best way to implement predefined settings defaults - that is compatible with Web Builder and rest of your vision?
There are also a few parameters we change from default because the now have extended functionality - and it would be beneficial to use if they are preset in a new compile (Web Builder > Select BlackBox X32 > settings are already there when you start building your profile)

We currently a function in CONTROL to set these for profile loads, backup restores, etc:

https://github.com/OpenBuilds/OpenBuilds-CONTROL/blob/5e3c66ac7275399580109d3e31c35c17420d38aa/app/js/grbl-settings-defaults.js#L4-L24

Basically just:

$10=511 ; we had $10=1 for Grbl, but we need 511 for the Troubleshooting tab in CONTROL to show the Pin States as people test endstops
$5=7 ; we have filtered switches and controller inputs, use NO switches
$6=7 ; our probe is Normally Open
$4=0 ; We had $4=1 in Grbl (the stepper drivers in BlackBox needed an inverted input). With grblHAL that "inversion" is already active by default, but default setting re-inverts it ($4=7 is the default I think) 

Is this something we can do from our pinmap? (if we have to do a PR) or if you don't mind, you can help us implement the options - we just don't know where to start to keep it compatible with the mainline and build tools etc without affecting other boards (:

Crash using modbus

Hello Terjeio

I bought a TinyBee v1.0 and I test it before mounting in my CNC, Wifi, Webui, SDcard, 5 axis, 3 limits + probes are OK.
Firmware downloaded yersterday, last IoSender

I enabled VFD, HUANYANG , the status message is ok on the TX2, I sniffed it, but when I send a command, M3S0 for example, the TX2 send the right message command to the VFD including the CRC, then the ESP32 crash "Core 0 panic'ed (InstrFetchProhibited)"

I haven't the logs files, because I'm not at home, i'll send you later.

have you a clue?

Also I need on this board the dual spindle, do you plan to add it?

Thanks for your work and your help

Joachim

[Question] WebUI 3.0 is out for GRBL any plan for grblHAL_ESP32 ?

Hello,
I like the grblHal approach and thank you for using my webUI ^_^ I am very proud you chose it 😸

Sorry to push my question here if it is not the right place, but I do not see discussion panel and cannot find Discord/Gitter Server for questions.

I am working on WebUI 3.0 which is more target oriented, it has smaller footprint and more features compare to previous version, several are dedicated to GRBL, I see you use the webui 2.1 which not actually really GRBL oriented but adapted from 3D printer version, at this time I was very new to CNC world (still learning a lot...)

Do you have any plan to support the WebUI V3.0 ? - I can help on changes as backend has several changes that need to be done, be noted 3.0 is not backward compatible with 2.1 due to these changes, but benefits are real vs current 2.1

List of current features (more will come) : https://github.com/luc-github/ESP3D-WEBUI/blob/3.0/Features.md

Let me know if is planed, so I could had a grblHAL target to V3 and support specific needs for grblHal , and also propose a PR for it if you want😸

No WCO, can't zero DRO - Bug report

I think some new update brought a new bug to this GrblHAL. I can't use G10 L20 to zero the WCS in IoSender or anywhere else, at first I tought it was something I modified in the code that was causing this but I cloned a new version to test it and it's still happening. Also, there is no WCO on every 10 status reports or when using G10L20.

Trouble setting MPG mode

So, I activated MPG mode on the CMakeList.txt, setted the pins on _map.h as the CNC_BOOSTER_PACK_map.h and enabled MPG on the my_machine.h as instructed on the core GrblHAL wiki about MPG and still I'm getting hit with an error when compiling telling me that I need to enable the MPG_ENABLE_PIN and the UART2_RX_PIN. Here's what the map looks like:

#if MPG_MODE_ENABLE

#define UART2_RX_PIN            GPIO_NUM_16
#define UART2_TX_PIN            GPIO_NUM_17
#define MPG_ENABLE_PIN          GPIO_NUM_15

#endif

and the error message:

In file included from ../main/driver.c:33:
../main/./driver.h:239:4: error: #error "MPG_ENABLE_PIN must be defined when MPG mode is enabled!"
#error "MPG_ENABLE_PIN must be defined when MPG mode is enabled!"
^~~~~
../main/./driver.h:242:4: error: #error "UART2_RX_PIN must be defined when MPG mode is enabled!"
#error "UART2_RX_PIN must be defined when MPG mode is enabled!"

Installation Instuctions

I am tryingto upload the firmware to an ESP32 dev module.

Instructions says "Go into the ESP32 directory and modify settings in grbl/config.h and CMakeLists.txt as needed. Pin assignments and board specific config is in *_map.h files for each individual board."

Where is the ESP32 directory located ?

Thank you

CNC XPro V5 0-10v PWM Converter Issue

Sorry, one last issue The CNC Xpro has a built-in PWM Converter that outputs a 0-10v signal which is use to drive my kmb spindle there's also a relay that can be linked to the enable pin. I cannot seem to get this working correctly and it seems very intermittent the relay often gets stuck on and the pwm settings disappear from the config screen. I have managed to get the spindle to turn on but it on goes to max speed and gets stuck and stops me from disabling it again.

The approx description of how it works can be found here
https://github.com/Spark-Concepts/xPro-V5/wiki/Front_Panel

Hint about GPIO 34..39

Maybe it's worth mentioning in the docs, that on ESP32 there is no internal pull-up feature on gpio pins 34 to 39. Took me a while with debugging pins and pull-up settings in grblHAL :-/

Recent changes to Serial queue?

I last did a pull on March 18th, added a board definition and all was working great.
Did a clean clone down today, put back my board definition (just a pinmap) and cmakelist entries (for the board include and name), built, and flashed - all good there just as always

But something seems broken?

no response

Same if I try to connect from OpenBuildsCONTROL

MKS DLC32 and MKS TinyBee Board support

Hello, the MKS DLC32 is a 3 axis Grbl board using an ESP32 it currently supports/runs 1.1f I have 2 of these boards and FluidNC has a drop-in YAML for them, but I like GrblHal and IOsender. I'm just not sure how to port the stock 1.1f or FluidNC file over to grblHal. Also they just came out with the TinyBee witch is basically a 5 axis version of the DLC32. Any help would be appreciated.

Intermittent Homing Error

On the YAxis homing will often fail just after the seek portion of the homing cycle the axis will trigger the switch but then not move off the switch to continue the homing cycle. I've experimented with GRBL_ESP32 and am able to achieve consistent homing on that axis I have also tried repositioning the switch, placing each axis on a different homing pass, a range on debouncing times and pull off distances and toggling the pullup resistors and the issue continues so as far as i can it must be a firmware related issue.

weak symbol crashing the MCU

Since the recent merger of the testing branch into master in the original grblHAL monorepo, the grblHAL crashes on my ESP32 boards with the following stack trace:

GrblHAL 1.1f ['$' for help]
<Idle|MPos:0.000,0.000,0.000|Bf:35,1023|FS:0,0|Pn:XYZ|Ov:100,100,100>
ets Jun  8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1316
load:0x40078000,len:12224
ho 0 tail 12 room 4
load:0x40080400,len:3020
entry 0x400805e4
Guru Meditation Error: Core  1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core  1 register dump:
PC      : 0x00000000  PS      : 0x00060b30  A0      : 0x800d4c27  A1      : 0x3ffb5600
A2      : 0x3ffc3078  A3      : 0x00000000  A4      : 0x00000150  A5      : 0x3ffc31c8
A6      : 0x3ffbede8  A7      : 0x00000015  A8      : 0x800e06c6  A9      : 0x000203fb
A10     : 0x00000001  A11     : 0x3ffc2434  A12     : 0x3ff000c4  A13     : 0x3ffbed50
A14     : 0x00000001  A15     : 0x3ffc073c  SAR     : 0x00000009  EXCCAUSE: 0x00000014
EXCVADDR: 0x00000000  LBEG    : 0x400012e5  LEND    : 0x40001309  LCOUNT  : 0x800e0ec7
Backtrace:0xfffffffd:0x3ffb5600 0x400d4c24:0x3ffb5620 0x400d4b33:0x3ffb5640
ELF file SHA256: a30a8c1319f4e97b
CPU halted.

A bit of investigation showed that the MCU crashes on the call to my_plugin_init() in driver.c. Commenting that call out makes it work normally again. I experienced the issue on multiple boards.

BOARD_BLACKBOX_X32 not being set in CMakeList

Thanks to you and OpenBuilds for incorporating the Black Box x32 into your core build system!

After a bit of self doubt, questioning the meaning of life, etc, getting the following error:

#warning "Compiling for generic board!"

It dawned on me to check further down in CMakelists.txt to see what it was doing with the new BOARD_BLACKBOX_X32 option. Lo and behold, it is not setting a compile flag for the actual BOARD_BLACKBOX_X32 define.

if(BOARD_BDRING_V3P5)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_BDRING_V3P5)
elseif(BOARD_BDRING_V4)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_BDRING_V4)
elseif(BOARD_BDRING_I2S6A)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_BDRING_I2S6A)
elseif(BOARD_ESPDUINO32)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_ESPDUINO32)
elseif(BOARD_CNC_BOOSTERPACK)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_CNC_BOOSTERPACK)
elseif(BOARD_SOURCERABBIT_4AXIS)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_SOURCERABBIT_4AXIS)
elseif(BOARD_PROTONEER_3XX)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_PROTONEER_3XX)
elseif(BOARD_FYSETC_E4)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_FYSETC_E4)
elseif(BOARD_XPRO_V5)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_XPRO_V5)
elseif(BOARD_MKS_DLC32_V2P0)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_MKS_DLC32_V2P0)
elseif(BOARD_MKS_TINYBEE_V1)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_MKS_TINYBEE_V1)
elseif(BOARD_MY_MACHINE)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_MY_MACHINE)
endif()

I fixed this myself by adding the below to the bottom of the machine option if block and figured I should let you know about it:

...
elseif(BOARD_BLACKBOX_X32)
target_compile_definitions("${COMPONENT_LIB}" PUBLIC BOARD_BLACKBOX_X32)
...

Problem with ESP-WROOOM-32

Hello,

I compiled codes with basic functions (no WiFi, no SD, etc) and uploaded the firmware to ESP-WROOOM-32. But when connected it goes to the loop sending the welcome message.
image
Also I tried one of yours build (Fix for issue #21) - the same problem.

Wishlist for Web Builder: Door Enable/Disable

Hey! On the BlackBox X32 we have a door input.
Would love if it if Web Builder could allow users to build with Door enabled or Disabled (:

We leave it OFF in our default builds, as it expects an NC switch - most of our users doesn't have a switch hooked up, leading to door alarm on power up

Compilation error

Hi, I am trying to compile for ESP32 and I faced with the following error:

/home/kain/Documents/grblhal/main/driver.c: In function 'enetStreamWriteS':
/home/kain/Documents/grblhal/main/driver.c:164:5: error: implicit declaration of function 'serialWriteS'; did you mean 'serialInit'? [-Werror=implicit-function-declaration]
serialWriteS(data);
^~~~~~~~~~~~
serialInit
cc1: some warnings being treated as errors

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.