Can't build ArduRemoteID on Fedora38

First, you do not have a category for ArduRemoteID.

This is on Fedora38.

Now I am trying to follow the instructions at:

I have already installed arduino stuff with flatpak, so started with the git clone line. I got to ./scripts/regen_headers.sh and got errors which I attach below. Please help me figure out what is needed.

expanding com.hex.equipment.flow.Measurement
expanding com.hobbywing.esc.SelfTest
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Caught exception! ‘dict’ object has no attribute ‘unknownScriptName’
Traceback (most recent call last):
File “/home/rgm/Arduino/arduremoteid/modules/dronecan_dsdlc/dronecan_dsdlc.py”, line 197, in
assert not buildlist-builtlist, “%s not built” % (buildlist-builtlist,)
AssertionError: {‘uavcan.protocol.file.GetInfo’, ‘com.hex.equipment.flow.Measurement’, ‘dronecan.sensors.rc.RCInput’, ‘uavcan.protocol.file.GetDirectoryEntryInfo’, ‘uavcan.equipment.indication.LightsCommand’, ‘dronecan.remoteid.SelfID’, ‘uavcan.tunnel.Protocol’, ‘uavcan.equipment.gnss.Fix’, ‘uavcan.equipment.camera_gimbal.Mode’, ‘uavcan.equipment.safety.ArmingStatus’, ‘uavcan.equipment.power.CircuitStatus’, ‘uavcan.equipment.gnss.ECEFPositionVelocity’, ‘uavcan.equipment.ice.reciprocating.Status’, ‘uavcan.protocol.file.Delete’, ‘uavcan.protocol.enumeration.Begin’, ‘uavcan.tunnel.Call’, ‘com.hobbywing.esc.SetID’, ‘uavcan.protocol.dynamic_node_id.server.Entry’, ‘dronecan.remoteid.System’, ‘dronecan.remoteid.ArmStatus’, ‘uavcan.equipment.camera_gimbal.AngularCommand’, ‘com.himark.servo.ServoCmd’, ‘dronecan.remoteid.SecureCommand’, ‘uavcan.equipment.air_data.IndicatedAirspeed’, ‘uavcan.protocol.DataTypeKind’, ‘uavcan.equipment.ahrs.MagneticFieldStrength2’, ‘uavcan.protocol.debug.KeyValue’, ‘uavcan.protocol.dynamic_node_id.server.Discovery’, ‘com.volz.servo.ActuatorStatus’, ‘uavcan.protocol.file.BeginFirmwareUpdate’, ‘uavcan.equipment.power.BatteryInfo’, ‘uavcan.Timestamp’, ‘uavcan.equipment.device.Temperature’, ‘com.hobbywing.esc.RawCommand’, ‘uavcan.equipment.ahrs.RawIMU’, ‘uavcan.protocol.GetNodeInfo’, ‘uavcan.protocol.param.ExecuteOpcode’, ‘com.hobbywing.esc.StatusMsg2’, ‘uavcan.equipment.gnss.Auxiliary’, ‘uavcan.protocol.dynamic_node_id.server.RequestVote’, ‘com.hobbywing.esc.SetLED’, ‘uavcan.equipment.ice.FuelTankStatus’, ‘uavcan.protocol.param.Empty’, ‘uavcan.protocol.debug.LogLevel’, ‘uavcan.protocol.dynamic_node_id.server.AppendEntries’, ‘uavcan.equipment.air_data.AngleOfAttack’, ‘uavcan.tunnel.Broadcast’, ‘uavcan.equipment.gnss.RTCMStream’, ‘uavcan.protocol.param.Value’, ‘uavcan.equipment.air_data.StaticTemperature’, ‘uavcan.equipment.hardpoint.Command’, ‘uavcan.equipment.range_sensor.Measurement’, ‘uavcan.protocol.dynamic_node_id.Allocation’, ‘uavcan.equipment.esc.Status’, ‘uavcan.equipment.actuator.Command’, ‘uavcan.protocol.debug.LogMessage’, ‘com.hobbywing.esc.SetAngle’, ‘uavcan.CoarseOrientation’, ‘uavcan.equipment.camera_gimbal.GEOPOICommand’, ‘dronecan.remoteid.Location’, ‘uavcan.equipment.power.PrimaryPowerSupplyStatus’, ‘uavcan.equipment.indication.SingleLightCommand’, ‘uavcan.equipment.actuator.Status’, ‘com.hobbywing.esc.SetThrottleSource’, ‘uavcan.protocol.GlobalTimeSync’, ‘uavcan.navigation.GlobalNavigationSolution’, ‘com.hobbywing.esc.SetBaud’, ‘uavcan.equipment.ahrs.Solution’, ‘uavcan.equipment.ice.reciprocating.CylinderStatus’, ‘uavcan.protocol.GetTransportStats’, ‘uavcan.protocol.enumeration.Indication’, ‘uavcan.equipment.esc.RawCommand’, ‘com.hobbywing.esc.GetMajorConfig’, ‘uavcan.protocol.RestartNode’, ‘uavcan.equipment.air_data.TrueAirspeed’, ‘uavcan.protocol.param.NumericValue’, ‘uavcan.equipment.indication.BeepCommand’, ‘uavcan.protocol.file.Write’, ‘com.hobbywing.esc.SetDirection’, ‘uavcan.equipment.hardpoint.Status’, ‘uavcan.protocol.param.GetSet’, ‘uavcan.equipment.esc.RPMCommand’, ‘uavcan.equipment.ahrs.MagneticFieldStrength’, ‘uavcan.protocol.file.Path’, ‘uavcan.protocol.AccessCommandShell’, ‘uavcan.protocol.GetDataTypeInfo’, ‘com.hobbywing.esc.SelfTest’, ‘uavcan.protocol.Panic’, ‘uavcan.equipment.gnss.Fix2’, ‘com.hobbywing.esc.StatusMsg3’, ‘uavcan.protocol.HardwareVersion’, ‘com.hobbywing.esc.StatusMsg1’, ‘com.hobbywing.esc.GetEscID’, ‘uavcan.equipment.air_data.RawAirData’, ‘dronecan.remoteid.BasicID’, ‘uavcan.protocol.NodeStatus’, ‘com.hobbywing.esc.GetMaintenanceInformation’, ‘com.hobbywing.esc.SetReportingFrequency’, ‘uavcan.tunnel.SerialConfig’, ‘uavcan.protocol.SoftwareVersion’, ‘uavcan.protocol.CANIfaceStats’, ‘uavcan.protocol.file.Error’, ‘uavcan.equipment.air_data.StaticPressure’, ‘uavcan.protocol.file.EntryType’, ‘uavcan.equipment.air_data.Sideslip’, ‘dronecan.sensors.hygrometer.Hygrometer’, ‘com.himark.servo.ServoInfo’, ‘uavcan.equipment.camera_gimbal.Status’, ‘uavcan.protocol.file.Read’, ‘uavcan.equipment.indication.RGB565’, ‘dronecan.remoteid.OperatorID’, ‘uavcan.equipment.actuator.ArrayCommand’} not built
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
./scripts/regen_headers.sh: line 16: cd: libraries/DroneCAN_generated: No such file or directory
[rgm@lx140e arduremoteid]$

Seems you’re suffering from this issue:
compilation broken due to depency: empy 4.0 python module · Issue #57 · dronecan/libcanard (github.com)

On a brand new Fedora38 install, I needed the following prior to doing anything on the linked instructions:

sudo dnf install git
sudo dnf install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install cc.arduino.arduinoide
sudo dnf install python3-pip
sudo dnf install wget
sudo dnf install make

At least the way my barebones system was configured, I need to install the Arduino Flatpak using sudo for it to complete successfully. I spent no further time investigating permissions, groups, etc.

Then, after running the install script (./scripts/install_build_env.sh), you need to downgrade the empy module using pip:
pip install --upgrade empy==3.3.4

After that, I was able to finish the remaining steps and compile a binary for the ESP32.

Thanks for the reply.

I did the flatpak of cc.arduino.arduinoide previously.

I had all installed up to that pip install --upgrade empy==3.3.4

Doing that got me past this problem!

Now onwards…

I mentioned the rest of the steps I used because there were some other errors that flashed past and might have gone unnoticed by an inexperienced user when I attempted to run some of the setup scripts before fully configuring the system.

I’m afraid you’re on your own to flash the board. I’m running on a virtual machine, and I’m not going to climb a ladder to attach a USB cable to flash a board :slightly_smiling_face:

Got up to the “make” step. It got up to:

Building ESP32S3_DEV on esp32s3

I had yet to plug the esp32 in! I plugged the usb into power and the uart into my system and I can see /dev/ttyUSB0, but it is still sitting on the above building line.

Do I have the attachments wrong? That is how I did it for using the Arduino gui…

oh, when I was away from the term window, got some updates:

Merging ESP32S3_DEV
esptool.py v3.3-dev
Wrote 0x165950 bytes to file ArduRemoteID-ESP32S3_DEV.bin, ready to flash to offset 0x0
Building ESP32C3_DEV on esp32c3

I have an esp32s3. Looks like it is building all the bins?

then do the actual uploads. Will see.

It took a several minutes to build on a VM with 4 CPU cores and 8GB of RAM allocated.

I think as long as you have a valid serial device showing up as /dev/ttyUSBx, you’ll probably be able to flash the board.

Sometimes ESP32 boards require you to hold and release an EN button before they will allow the serial commands to flash. Most newer ones allow an auto-reset and avoid this nuance.

But if you have issues, you might try sending the upload command and then holding the EN button for a second and then releasing it while the uploader is still attempting to connect.

And yes, by default, if you just issue a make command with no target, it looks like it’s set up to build all variants.

Looks like it is going for all targets:

Merging ESP32C3_DEV
esptool.py v3.3-dev
Flash params set to 0x022f
Wrote 0x1749a0 bytes to file ArduRemoteID-ESP32C3_DEV.bin, ready to flash to offset 0x0
Building BLUEMARK_DB200 on esp32c3

how do I specify in the make only the esp32s3? As that is all I have? that is not in the building.md

Looks like it’s probably this target:
make esp32s3dev

You can see all of the options in RemoteIDModule\Makefile

If your machine is still struggling to build everything, do Ctrl-C, then:

make clean
make esp32s3dev

…or just use this one:
ArduRemoteID-ESP32S3_DEV.zip (917.3 KB)

did as above and now only have the esp32s3 bin.

I know about the pre-built bin, but wanted to be able to build from source as the plan is to develop a whole simulation setup and add IETF DRIP support. I am kind of assuming that support for the ASTM auth messages are not in the current source, and we have to work out how to send the content via mavlink. And all the DRIP Endorsements, but those may only be sent within the context of the appropriate auth messages anyway.

So getting the current code working is the 1st set. But isn’t that often the case?

If your intent is to develop over a longer term, I suggest starting with an Ubuntu LTS distribution, as that was what most of the build environments and instructions are predicated upon.

Now how to upload:

make upload esp32s3dev
Failed to find serial device
make: *** [Makefile:86: checkdev] Error 1

ls /dev shows /dev/ttyUSB0. That is the uart port. Instructions are not clear if that is how to do this…

I already have pyserial installl.

It would be a rather big lift for me to work with Ubuntu. I have been with Fedora since 6, when I felt it was stable enough to move from Centos on my notebook. I have never worked with Ubuntu. Just not the bandwidth. My job is writing in the IETF (and use to also be IEEE 802); coding is quite the side effort and I rely too much on the good efforts of others.

So plug along I go!

You have to pick your battles here.

Either you learn a little about Ubuntu and avoid struggling with dev environment setup…or you learn more about environment setup and struggle with your chosen distribution.

What does the following command show (with your board plugged in)?
ls /dev/serial/by-id/usb-Espressif_*

I’m guessing directory not found.

You can try this:

cd ~/arduremoteid/RemoteIDModule
cp Makefile Makefile.bak
sed -i 's/serial\/by-id\/usb-Espressif_/ttyUSB/g' Makefile
make upload

I hit my max posts and had to wait to send this.

I finally got the code uploaded.

I can access the web page. But I am not seeing any test RID messages from any of my scanners. Of course the claim is it does this over BT, and recent testing was all over WiFi. So next is to look at the code and figure out how to dummy up RID info and enable WiFi rather than BT.

But I am going away tomorrow for the weekend and might not get back to this until Monday. But managed to build the default code and get it installed!

thanks!