Embedded/Microcontroller bundle

I know these bits are available separately, but from a personal standpoint I think it would be an interesting selling point if there was a one-stop shop bundle for development with arduino, circuitpython, etc. I know these can be heavily opinionated discussions but why not.

I do a lot w/ circuitpython and micropython, it would be nice if I have a bundle that pulled in the latest versions of each, installed pip and pipenv in the user space, screen, and then installed mu editor system wide. Maybe an option to bring in VS Code as well?

For arduino boards, again have the compilers/runtimes needed, and then maybe a version that has VS Code and a version that has the arduino IDE.

I picked VS Code due to the design of the editor and project limitations with writing files to the hardware.

The point being it would be nice to have some bundles that allowed me to bundle-add embeded-circuitpython, bundle-add embeded-miscropython, bundle-add embeded-arduino that pulled in everything needed. I know there is an IoT profile so maybe these could be profiles instead? I am still learning my way around the system itself but so far all the tools I want for dev and project work are readily available.

There is a few “maker” bundles already, it should live in those. “embedded” is probably too broad. “making” circuit boards is the task you are performing, so that would be the right bundle I think.

I will poke at those, this is not making or designing hardware, this is more development of software for microcontrollers and commercially available embedded systems.

1 Like

Have you tried to use flatpak packages?

you can Install Arduino IDE and VS Code from it.

Look at https://flathub.org/

and let us know your experience.

I have and that is what I did but I like the idea of 1 way to install and update which in this case would be with bundles :stuck_out_tongue_winking_eye:

keeping this here to make things easier as it directly relates to circuitpython, micropython, arduino, etc. I am having an issue using my microcontrolers due to modem garbage. What I need to do is uninstall a package called modem-manager. I have tried a search and gotten nowhere.

This screws with some of the bits when doing a serial connection so it should be removed. I can’t seem to figure out how to find a package that deep in the stack.

I am trying to answer it here as I will turn this thread into a blog post on getting a dev env up and running from a base install with all the little hiccups fixed.

Thanks!

I found mmcli in NetworkManager-Extras.
https://clearlinux.org/software/bundle/networkmanager-extras

There could be some issues with uninstalling that is the applet is also included here. I would strongly urge you breaking this out into its own package as it is really only used for 2G/3G/4G modems and various methods to configure the modems.

https://www.freedesktop.org/wiki/Software/ModemManager/

I can see why this was done but no other distro I know bundles this in tightly, though will install it by default, due to the fact that 95% of their users will not need it and it is known to cause issues with usb connections and microcontrollers running micro/circuit python. I am happy to keep digging into this and will drop bits in this thread but I am going to work towards uncoupling this in a way that does not harm my base install, as in don’t just delete it, and then run my system without it for some time. I have both my Arch and Ubuntu boxes running just fine with this package removed and I am doing a lot of networking with SDR, microcontrollers, and other such toys :slight_smile:

I changed paths here. I still feel modem-manager should be broken out. In the meantime for anyone else dealing with this here is the clean way to fix the issue going forward:

Get the vendor and device id
$ lsusb
Bus 001 Device 006: ID 239a:8032

In this case it is 239a:8032

Create a udev blacklist file if one does not exist
sudo touch /etc/udev/rules.d/77-mm-usb-device-blacklist.rules

Add the following to the blacklist if it was a new file, if the file already exists then you can simply add the line specific to the devices you want to blacklist, in my case is was for a pyPortal and CircuitExpress. The key here is the make sure target the right subsystem, in this case “usb”. By default the circuitexpress didn’t have any issues but I am adding it here for the sake of completeness and future proofing.

ACTION!="add|change|move|bind", GOTO="mm_usb_device_blacklist_end"
SUBSYSTEM!="usb", GOTO"mm_usb_device_blacklist_end"

# Adafruit PyPortal
ATTRS{idVendor}=="239a", ATTRS{idProduct}=="8032", ENV{ID_MM_DEVICE_IGNORE}="1"

# Adafruit CircuitExpress
ATTRS{idVendor}=="239a", ATTRS{idProduct}=="8019", ENV{ID_MM_DEVICE_IGNORE}="1"


LABEL="mm_usb_device_blacklist_end"

You now need to either reboot or simply reload the rules. Simply restarting the service will not do the trick.

sudo udevadm control --reload-rules

verify the service is back up and running

sudo systemctl status ModemManager

Resource

Sample file
https://cgit.freedesktop.org/ModemManager/ModemManager/tree/src/77-mm-usb-device-blacklist.rules

Mailing list w/ details
https://mail.gnome.org/archives/networkmanager-list/2013-October/msg00038.html

I will write this up a little nicer once I get the whole env up and the other kinks worked out.