nRF Connect for Desktop - Programmer v3.0.4 support for nRF9160 using other USB chips

I'm developing currently with the nRF9160 feather , which uses a CP2102 for USB.

That works quite well, especially it enables to add different sensors, which isn't that easy with a Thingy:91. Using a nRF9160-DK for that requires a larger form-factor.

Flashing firmware for the Arm33 works quite well over USB using the zephyr tools. Also using a jlink works.

But using nRF Connect for Desktop and a USB connection seems to be refused (or not considered by Nordic).

According pc-nrfconnect-programmer devices.ts the Programmer App filters on the USB ids.

Would it be possible to add a checkbox to make other USB serials also available?

That would make it easier to update the modem-firmware over USB without jlink.

Parents Reply
  • Hi,

    Achim Kraus said:
    Using node.js v18 it's possible to follow the documentation and build a Programmer including different USB id. Unfortunately it seems, that the programmer uses something else to select valid devices (my be the missing "nrf-device-lib-js").

    How did you configure the application? 

    Can you try adding this here:

    const deviceListing: DeviceTraits = {
        nordicUsb: true,
        serialPorts: true,
        jlink: true,
        mcuBoot: true,
        nordicDfu: true,
        // Add this line
        usb: true,
    };

Children
  • I tried it.

    The Programmer shows now a "CP2102 USB to UART" pictogram.  If I select that, the programmer shows "Unknown Family".

    My current diffs:

    --- a/src/util/devices.ts
    +++ b/src/util/devices.ts
    @@ -193,6 +193,7 @@ export enum CommunicationType {
      * Supported USB vender IDs
      */
     export enum VendorId {
    +    SILICON_LABS = 0x10c4,
         SEGGER = 0x1366,
         NORDIC_SEMICONDUCTOR = 0x1915,
     }
    @@ -200,14 +201,14 @@ export enum VendorId {
     /**
      * Supported USB serial DFU product IDs
      */
    -export const USBProductIds = [0x521f, 0xc00a, 0xcafe];
    +export const USBProductIds = [0x521f, 0xc00a, 0xcafe, 0xea60,];
     
     /**
      * Supported USB MCUboot product IDs
      */
     export const McubootProductIds = [
         // Thingy91
    -    0x520f, 0x9100,
    +    0x520f, 0x9100, 0xea60,
         // Thingy53
         0x530c,
     ];
    @@ -217,7 +218,7 @@ export const McubootProductIds = [
      */
     export const ModemProductIds = [
         // Thingy91
    -    0x520f, 0x9100,
    +    0x520f, 0x9100, 0xea60,
     ];
     
     /**
    @@ -256,9 +257,11 @@ const getDeviceDefinitionByFamily = (
     const getProductId = (device: nrfdl.Device) => {
         if (!device.serialPorts) return 0;
     
    +    console.err("Serial Product ID: " + productId);
    +
         return parseInt(
             device.serialPorts.reduce(
    -            (m, p) => (p.vendorId === '1915' ? p.productId : '') || m,
    +            (m, p) => (p.vendorId === '1915' || p.vendorId === '10c4'? p.productId : '') || m,
                 ''
             ),
             16
    @@ -276,7 +279,7 @@ const identifyUsbByVersion = (device: nrfdl.Device) => {
     
     const identifyUsbBySerialPort = (device: nrfdl.Device) => {
         const productId = getProductId(device);
    -
    +    console.err("Product ID: " + productId);
         // nRF52
         if (USBProductIds.some(id => id === productId)) {
             return deviceDefinitions.find(d => d.family === DeviceFamily.NRF52);
     

  • Hi,

    Did you try to only add that or did you add it + the other stuff that you changed?

    regards

    Jared

  • I tired it now with

        // Add this line
        usb: true,

    only. The result is the same. 

    Unsupported device. The detected device could not be recognized as neither JLink device nor Nordic USB device.
    Please make sure J-Link Software and nrf-udev are installed. See https://github.com/NordicSemiconductor/pc-nrfconnect-launcher/#macos-and-linux

  • Let me add:

    For me this looks now, that supporting only "Nordic" devices is by intention. Though the nRF9160 has no own USB interface, it's supported indirect. Here Nordic filters for their own USB (secondary) devices.

    Usually I would not ask to change that, it's simply Nordic's decision.

    But in my experience of the past two years, I can only say, that the feather-nRF9160 is the device, I was always missing. The Thingy:91 is great, if it can be used for the application "out of the box". The nRF9160-DK is great to develop an application also with additional custom sensors and actors. But, if such a "prototype" is going "in to the wild", my experience with the feather is great. It relaxes also Nordic from trying to add an extension interface to the Thingy:91.

    With that, I like to recommend to consider to support the nRF9160 also via other USB controllers, not only Nordic ones.

  • Hi Achim,

    For now, I think we need to wait for this feature to be added in a future release for nRF Connect for Desktop Programmer app. 

    The developers are aware of this feature request. 

    regards

    Jared 

Related