Edge-impulse-daemon "Failed to upload to Ingestion API"

Question/Issue:
When I follow the guide for the nRF54L15 + X-NUCLEO-IKS02A1, edge-impulse-daemon fails to upload the accelerometer data to the Ingestion API.

Project ID:
1048257

Context/Use case:
This bug is relevant to anyone who follows the nRF54L15 guide.

Steps to Reproduce:

  1. Install edge-impulse-cli
  2. Follow the nRF54L15 guide
  3. Open up the project page that edge-impulse-daemon outputs
  4. Start sampling accelerometer data
  5. When sampling finishes, edge-impulse-daemon will fail to upload the data.

Expected Results:
I expect edge-impulse-daemon to either successfully upload the data, or provide me with a file to upload to the studio myself.

Reproducibility:
Always

Environment:

  • Platform: nRF54L15 DK
  • Build Environment Details: NA
  • OS Version: Windows 11 and Linux (NixOS)
  • Edge Impulse Version (Firmware): v0.0.0
  • Edge Impulse CLI Version: 1.39.2
  • Project Version: No versions created yet
  • Custom Blocks / Impulse Configuration: NA
    Logs/Attachments:
    edge-impulse-daemon output on Windows:
Edge Impulse serial daemon v1.39.2
Endpoints:
    Websocket: wss://remote-mgmt.edgeimpulse.com
    API:       https://studio.edgeimpulse.com
    Ingestion: https://ingestion.edgeimpulse.com

? Which device do you want to connect to? (šŸ” type to search) COM7
[SER] Connecting to COM7
[SER] Serial is connected, trying to read config...
[SER] Retrieved configuration
[SER] Device is running AT command version 1.8.0

[SER] Device is not connected to remote management API, will use daemon
[WS ] Connecting to wss://remote-mgmt.edgeimpulse.com
[WS ] Connected to wss://remote-mgmt.edgeimpulse.com
[WS ] Device "nRF54L15" is now connected to project "Anthony24851-project-1". To connect to another project, run `edge-impulse-daemon --clean`.
[WS ] Go to https://studio.edgeimpulse.com/studio/1048257/acquisition/training to build your machine learning model!
[WS ] Incoming sampling request {
  path: '/api/training/data',
  label: 'Test',
  length: 10000,
  interval: 10,
  hmacKey: 'hidden',
  sensor: 'Accelerometer'
}
[SER] Configured upload settings
[SER] Sampling started
[SER] Sampling done
[SER] Device not connected to WiFi directly, reading from buffer (bytes 0 - 16071, expecting to read ~21428 bytes...
[SER] Reading 46% complete...
[SER] Reading 99% complete...
[SER] Reading from buffer OK
[SER] File is 16071 bytes after decoding
[SER] Uploading to https://ingestion.edgeimpulse.com/api/training/data
[SER] Failed to upload to https://ingestion.edgeimpulse.com/api/training/data Error: Failed to upload: 400 Bad Request
    at SerialDevice.sampleRequest (C:\Users\user\AppData\Roaming\npm\node_modules\edge-impulse-cli\build\cli\daemon.js:409:35)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async WebSocket.<anonymous> (C:\Users\user\AppData\Roaming\npm\node_modules\edge-impulse-cli\build\cli-common\remote-mgmt-service.js:247:21)

Note: daemon.js:409:35 corresponds to this line in the edge-impulse-cli repo.

Hi @Anthony24851 - I’m looking into this one for you. Hang tight!

OK, one thing to try as a simple fix first. Have you tried running the daemon with the clean flag and reconnecting to the project?

edge-impulse-daemon --clean

If not, that is a good first step. In the meantime, I will connect with our embedded team.

That command fixed the issue. Thank you!

Awesome! Great to hear.