Coder Social home page Coder Social logo

mcumgr-client's Issues

How to switch to the image uploaded in the slot 1?

The go mcumgr client has some commands for image test and image confirm <hash>
to test and confirm the uploaded image,
I don't seem to see how it is done using this client.
I am able to upload the image and can also reset ,the functionality that was just added I think.
But I am not able to switch to the newly uploaded image.

Here is what I mean :

 mcumgr-client -d /dev/ttyACM0 list
mcumgr-client 0.0.3, Copyright © 2023 Vouch.io LLC

13:44:25 [INFO] send image list request
13:44:25 [INFO] response: {
  "images": [
    {
      "hash": [
        143,
        216,
        200,
        104,
        234,
        205,
        70,
        55,
        185,
        70,
        196,
        253,
        228,
        109,
        99,
        197,
        203,
        58,
        234,
        157,
        155,
        58,
        127,
        29,
        239,
        106,
        149,
        143,
        234,
        36,
        12,
        252
      ],
      "slot": 0,
      "active": true,
      "pending": false,
      "version": "1.1.1",
      "bootable": true,
      "confirmed": true,
      "permanent": false
    },
    {
      "hash": [
        143,
        216,
        200,
        104,
        234,
        205,
        70,
        55,
        185,
        70,
        196,
        253,
        228,
        109,
        99,
        197,
        203,
        58,
        234,
        157,
        155,
        58,
        127,
        29,
        239,
        106,
        149,
        143,
        234,
        36,
        12,
        252
      ],
      "slot": 1,
      "active": false,
      "pending": false,
      "version": "1.1.1",
      "bootable": true,
      "confirmed": false,
      "permanent": false
    }
  ],
  "splitStatus": 0
}

now when I upload the image

  mcumgr-client -m 256 -d /dev/ttyACM0 upload build-dongle-update/zephyr/app_update.bin
mcumgr-client 0.0.3, Copyright © 2023 Vouch.io LLC

13:54:05 [INFO] upload file: build-dongle-update/zephyr/app_update.bin
13:54:05 [INFO] flashing to slot 1
13:54:05 [INFO] 226567 bytes to transfer
  [00:00:12] [=================================================================================================================================] 221.26 KiB/221.26 KiB (0s)13:54:18 [INFO] upload took 13s

NOTE:
(see I had to reduce the MTU to 256, default does not work I don't know why, any way that's another issue)

I can see it being uploaded correctly

mcumgr-client -d /dev/ttyACM0 list
mcumgr-client 0.0.3, Copyright © 2023 Vouch.io LLC

13:55:05 [INFO] send image list request
13:55:05 [INFO] response: {
  "images": [
    {
      "hash": [
        143,
        216,
        200,
        104,
        234,
        205,
        70,
        55,
        185,
        70,
        196,
        253,
        228,
        109,
        99,
        197,
        203,
        58,
        234,
        157,
        155,
        58,
        127,
        29,
        239,
        106,
        149,
        143,
        234,
        36,
        12,
        252
      ],
      "slot": 0,
      "active": true,
      "pending": false,
      "version": "1.1.1",
      "bootable": true,
      "confirmed": true,
      "permanent": false
    },
    {
      "hash": [
        255,
        148,
        49,
        169,
        189,
        101,
        39,
        214,
        71,
        242,
        38,
        40,
        206,
        34,
        22,
        7,
        108,
        39,
        191,
        13,
        228,
        192,
        129,
        55,
        25,
        71,
        61,
        45,
        111,
        40,
        111,
        188
      ],
      "slot": 1,
      "active": false,
      "pending": false,
      "version": "1.0.2",
      "bootable": true,
      "confirmed": false,
      "permanent": false
    }
  ],
  "splitStatus": 0
}

Even after resetting the device it does not move it to slot 0 and nor can I test or confirm the image.

better progress display

Currently when uploading an image, it shows lots of lines which scrolls:

06:42:40 [INFO] 17% uploaded
06:42:40 [INFO] 17% uploaded
06:42:41 [INFO] 17% uploaded
06:42:41 [INFO] 17% uploaded
06:42:41 [INFO] 17% uploaded
06:42:41 [INFO] 17% uploaded
06:42:41 [INFO] 17% uploaded
06:42:41 [INFO] 17% uploaded
06:42:41 [INFO] 17% uploaded
...

This should be improved with ANSI escape sequences, e.g. move cursor one line up so that it is all displayed in one line, as usual for such progress messages. Probably also a good idea to not print it with the logging crate. And would be nice to have a used time and transfer rate (x kB/s) at the end, and maybe during the process, estimated remaining time.

allow to use BLE for updates

The old Go program allows to use the Nordic BLE mcumgr interface to update images. This should be implemented for this program as well.

unclear error message

When the device file is not found, it just says "Error: No such file or directory", but it should say that the device file is not found, and show the filename of the device file.

FW update over UART fails when the UART channel is also used for logging.

Hello,
I am attempting to use the mcumgr-client in my system on a UART channel that is also used for sending logging information. I observed that the update process succeeds when the logging module is disabled, but fails when it is enabled.
I am able to update the firmware with the Go utility when logging is enabled, though.

This was tested with a MacBook, as well as an iMx processor running Linux.

root@imx93-evse-enph:/media/data# ./mcumgr-client -s 2 -m 4096 -l 8192 -d /dev/ttyLP4 upload zephyr.signed\ 3.bin
mcumgr-client 0.0.4, Copyright © 2024 Vouch.io LLC

10:56:52 [INFO] upload file: zephyr.signed 3.bin
10:56:52 [INFO] flashing to slot 2
10:56:52 [INFO] 950612 bytes to transfer
10:56:59 [ERROR] Error: read error, expected: 6, read: 56
root@imx93-evse-enph:/media/data#

Bad CPU type on macOS x86

With the 0.0.3 release on an x86 Mac:

$ ./mcumgr-client
-bash: ./mcumgr-client: Bad CPU type in executable
$ file mcumgr-client
mcumgr-client: Mach-O 64-bit executable arm64

Add the `Cargo.lock` file to the repository

Hey there! Just a quick heads up — it's a good idea to include the lock file inside the repository for your applications. This makes it easier to ensure that the exact versions used for the application can be replicated.

I encountered this issue when packaging the application for NixOS, and I'm considering removing the manually created lock file from Nix's Packages repository.

Do you have any thoughts on that?

add CI acceptance test with the "test" serial port

The changes to the "list" command in PR #29 broke the list command for the "test" serial port, which tests the commands without hardware. We should have automated Github acceptance tests, which runs the program with all commands with the test port, to make sure changes don't break existing functionality.

The dummy device implementation is in test_serial_port.rs and might need some more sophisticated implementation as well.

mcumgr-client.exe -v -d COM6 list results in [ERROR] Error: wrong chunk length

I'm using nRF52840 with nRF Connect SDK 2.3.0 and MCUBoot 1.9.99 on windows 11.
GO version of mcumgr works fine.

But if I use the rust client I get the following error:

mcumgr-client 0.0.2, Copyright © 2023 Vouch.io LLC

09:30:58 [INFO] send image list request
09:30:58 [DEBUG] (1) mcumgr_client::transfer: request header: NmpHdr { op: Read, flags: 0, len: 1, group: Image, seq: 116, id: 0 }
09:30:58 [DEBUG] (1) mcumgr_client::transfer: serialized: 0000000100017400a0
09:30:58 [DEBUG] (1) mcumgr_client::transfer: encoded with packet length and checksum: 000b0000000100017400a08236
09:30:58 [DEBUG] (1) mcumgr_client::transfer: encoded: AAsAAAABAAF0AKCCNg==
09:30:58 [DEBUG] (1) mcumgr_client::transfer: result string: AP4BAAD0AAF0AL9maW1hZ2Vzn79kc2xvdABndmVyc2lvbmUwLjAuMGRoYXNoWCAhMl1cs2VM49NtItcmo6HjtOgK+MAPNpaS8dDcfOGC6Ghib290YWJsZfVncGVu
09:30:58 [ERROR] Error: wrong chunk length

Thanks!

Hello @Frank-Buss and thank you for this implementation! I'd like to contribute to this work. Some ideas I have:

  • unit tests
  • integration tests
  • CI/CD in github workflows
  • release workflow that automates the build and distribution of binaries for Windows, Linux, and Mac

LMK where you see priorities.

Cheers,
J.P.

Increased line-length / MTU results in hang

For my setup with macOS 12.6.5, I get a hang if I try the -m 4096 -l 8192 increased buffer settings:

$ mcumgr-client -t 60 -m 4096 -l 8192 upload ext-flash-slot3.bin
mcumgr-client 0.0.2, Copyright © 2023 Vouch.io LLC

19:30:54 [INFO] One bootloader device found, setting device to: /dev/cu.usbmodem14301
19:30:54 [INFO] upload file: ext-flash-slot3.bin
19:30:54 [INFO] flashing to slot 3
19:30:54 [INFO] 22003712 bytes to transfer

with the above it just sits there.

$ uname -a
Darwin Mike-MacBook-Pro.local 21.6.0 Darwin Kernel Version 21.6.0: Thu Mar  9 20:08:59 PST 2023; root:xnu-8020.240.18.700.8~1/RELEASE_X86_64 x86_64

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.