Skip Enable and Update (the following step) if you have already done it
Enable and Update the Degirum repository
-
Install prerequisites:
sudo apt install curl
-
Download DeGirum public key:
-
Ubuntu 20.04:
wget -O - -q http://docs.degirum.com/apt-repo/DeGirum.gpg.key | sudo apt-key add -
-
Ubuntu 22.04:
- Ubuntu 24.04:
curl -fsSL http://docs.degirum.com/apt-repo/DeGirum.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/degirum.gpg
-
-
Add DeGirum software repository to APT sources configuration file:
-
Ubuntu 20.04:
echo deb [arch=amd64,arm64] https://docs.degirum.com/apt-repo ORCA main | sudo tee -a /etc/apt/sources.list
-
Ubuntu 22.04:
- Ubuntu 24.04:
echo deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/degirum.gpg] https://docs.degirum.com/apt-repo ORCA main | sudo tee -a /etc/apt/sources.list
-
-
Update package information from configured sources:
sudo apt update
Installation procedure for ORCA utilities
- Download and install DeGirum tools package:
sudo -E apt install dgotools-dg
This would install dgopwc, dgoinfo and qflup binaries
dgoinfo - DeGirum ORCA info
Description
dgoinfo is a utility to print out information about device(s) with ORCA. If there is no board selection specification then all board info printed out.
Parameters
dgoinfo command [options]
Available commands:
hw - Print out information about hardware
fw - Print out information about firmware
pwr - Print out information about power control
stats - Print out information about device statistic
all - Print out all above information (Default command)
Options
-b bus, --bus=bus Device bus address: part of BDF for PCIe device, USB Controller / Hub Path for USB device.
-d dev, --dev=dev Device address on a bus: part of BDF for PCIe device, the USB Connection Device address.
-p port, --port=port Device por on a USB bus: N/A for PCIe device, the USB controller / Hub port address.
-n number, --ndev=number [=0 by default] If previos parameters matched for few devices (e.g. only bus was pointed) or nothing was specified then number specifies the device in OS specific order.
Sample run
Device 0:
USB and M.2 PCIe device: 0 BDP 2:22-1 with DDR
Board info: HVS00014(A1/01): 00002090.
Firmware ver: 0x101000f-0xc153155. Heartbeat: 00000005 secs.
Temperature: 41C, Frequency: AISS 250MHz, CPU 250MHz, DDR 1333MHz. Power profile: hi.
Device use: 0%. No failures.
dgopwc - DeGirum ORCA power control
Description
dgopwc is a utility to set/get power parameters on ORCA device with PCIe/USB interfaces.
Parameters
dgopwc command [options]
Available commands:
get - Get ORCA power control parameter
set - Set ORCA power control parameter
Available command get/set items:
temp - temperature (get only)
freq - Current frequency of AISS (get only)
freq aiss - Current frequency of AISS (get only)
freq cpu - Current frequency of CPU (get only)
profile - ORCA power control profile (lo/mid/hi)
Advanced user items:
freq aiss idle - AISS idle frequency
freq aiss active - AISS active frequency
freq aiss fp - AISS Floatin-point frequency
freq cpu idle - CPU idle frequency
freq cpu active - CPU active frequency
temp threshold hi - Temperature threshold high
temp threshold lo - Temperature threshold low
temp threshold crt - Temperature threshold critical
timeout idle - Timeout to switch in idle mode in no activity (in ms)
timeout throttling - Timeout to apply chip throttling after previous check (in ms)
block ddr_lp_mode - Allow low power mode of DDR
state ddr_lp_mode - State of low power mode of DDR (get only)
Common options
-b bus, --bus=bus Device bus address: part of BDF for PCIe device, USB Controller / Hub Path for USB device.
-d dev, --dev=dev Device address on a bus: part of BDF for PCIe device, the USB Connection Device address.
-p port, --port=port Device por on a USB bus: N/A for PCIe device, the USB controller / Hub port address.
-n number, --ndev=number [=0 by default] If previos parameters matched for few devices (e.g. only bus was pointed) or nothing was specified then number specifies the device in OS specific order.
-S, --sua [user by default] Super user access.
Sample run
qflup - QSPI flash updater
Description
qflup is a utility for erasing, reading, checking, updating firmware image on QSPI flash on ORCA device with PCIe/USB interfaces.
Parameters
qflup command [options]
Available commands:
update - update a firmware image on the flash
erase - erase the flash or a part of the flash
read - read a data from the flash
write - write a file to the flash
check - check the firmware in the flash
Common options
-b bus, --bus=bus Device bus address: part of BDF for PCIe device, USB Controller / Hub Path for USB device.
-d dev, --dev=dev Device address on a bus: part of BDF for PCIe device, the USB Connection Device address.
-p port, --port=port Device por on a USB bus: N/A for PCIe device, the USB controller / Hub port address.
-n number, --ndev=number [=0 by default] If previos parameters matched for few devices (e.g. only bus was pointed) or nothing was specified then number specifies the device in OS specific order.
-y, --yesall Confirm 'yes' for questions about any change data operations.
Update command parameter and options:
qflup update fw_image_path [ [-s|--size=size] | [-m|--md5=1] | [-N|--noverif=1] ]
fw_image_path Path to file with new firmware image.
-s size, --size=size [=0 by default] Firmware image size to update. If it is not specified or equal zero then it is a size of firmware image file.
-m, --size [no by default] Enable calculate md5 checksum for written block of Firmware and print it out. If it is not specified the tool out nothing.
-N, --noverif [verify by default] Skip firmware writing verification. If it is not specified the tool verifies written data.
Sample run updating firmware image in the device with bus number 3:
The operation is safe. Are you sure you want to update the firmware? (y/N): y
Check existing firmware:..
Found firmware v1.1.1-8a0e2b3 at 0x3000 with size about 0x2200
Write FW to address 0
Writing 0x123c bytes to flash at address 0x4
Please wait some time:....complete
MD5 hash: 690e79e0fa5239efff0f5383a3ac3d83
Read data back:..complete
Compare data...complete
Written data matched read back data
Activate Firmware at address 0
Erase command options:
qflup erase [ [-a|--address=address] | [-s|--size=size] ]
-a address, --size=address [=0 by default] Start address of erased area. The address will be aligned on subsector size to smallest address.
-s size, --size=size [=0 by default] Size of erased area. If size is not specified it is set to flash size (minus address) defined for the device. If address + size crossing subsector boundary then all subsectors will be erased. If address and size are zero (not specified) whole flash will be erased.
Sample run erasing a part of the flash and answer yes on question:
Read command options:
qflup read [ [output_file_path] | [-a|--address=address] | [-s|--size=size] ]
-a address, --size=address [=0 by default] Start address in the flash to read.
-s size, --size=size [=1MB by default] Size of reading area. If size is not specified it is set to 1MB. If size set to 0 it will be updated to flash size. Read data will be written to file specified by output_file_path or it will be printed out to console.
Sample run (reading a part of the flash from device with bus address 3)
00000000 f1 ca 61 de f0 00 00 00 00 00 00 00 00 00 00 00 |..a.............|
00000010 ae 15 b7 11 3b 59 54 9c d1 76 7f ba b0 a9 5b a3 |....;YT..v....[.|
00000020 43 5b 16 47 b5 ff eb 43 48 49 da 33 c8 1e 96 c3 |C[.G...CHI.3....|
00000030 09 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 |...@............|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000060 00 00 00 00 01 00 01 01 b3 e2 a0 08 00 32 00 00 |.............2..|
00000070 00 00 02 00 f4 0e 00 00 65 96 af 1a 81 ca 84 20 |........e...... |
00000080 fe 63 d1 5f df 5c e4 0d 82 4a cb 9a 68 50 c0 02 |.c._.\...J..hP..|
00000090 20 0c 91 8c f7 6a d6 f9 00 00 04 00 48 01 00 00 | ....j......H...|
000000a0 48 44 f1 58 c7 7d 20 3a 56 07 e5 90 3b 08 1e 4d |HD.X.} :V...;..M|
000000b0 70 b4 63 fd e1 1b c8 df 64 1e ac c2 9e e9 70 b3 |p.c.....d.....p.|
000000c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000100
Write command parameter and options:
qflup write file_path [[-a|--address=address] | [-s|--size=size] | [-m|--md5=1] | [-N|--noverif=1] ]
fw_image_path Path to the file with the data to write.
-a address, --size=address [=0 by default] Start address in the flash to write the data.
-s size,--size=size [=0 by default] Data size to write. If it is not specified or equal zero then it is a size of the file.
-m,--size [no by default] Enable calculate md5 checksum for the written data and print it out. If it is not specified the tool out nothing.
-N,--noverif [verify by default] Skip a writing data verification. If it is not specified the tool reads back written data and compare with original.
Sample run of writing a file to the device:
The operation is unsafe. Are you sure you want to write the data? (y/N): y
Writing 0x12bb8 bytes to flash at address 0x0
Please wait some time:......................................complete
Read data back:...................complete
Compare data...complete
Written data matched read back data
Check command options:
qflup check [ [-a|--address=address] | [-s|--size=size] ]
-a address, --size=address [=0 by default] Start address in the flash to read.
-s size, --size=size [=0 by default] Size of checking area. If size is not specified it is set to board defined flash size. If firmware image is found on the flash and the image is valid for this tool the tool will print out the version of found firmware.