alexslade
I’m trying to create a basic lib (I’ll publish something for others) that lets me send GCode directly to a GRBL-based pen plotter.
The plotter is an iDraw H, it’s an arduino-based clone of an Axidraw. I have a similar arduino-based laser cutter that has been working fine with Circuits.UART, meaning that I plug the device into my rpi, and Circuits.UART.enumerate shows the interface.
With this new pen plotter, I can’t seem to connect. I’m pretty inexperienced with this kind of interface, so any advice is really appreciated.
My debugging information so far:
- I can connect on my mac using “Universal Gcode sender”. In the logs I see the connection is called “cu.usbmodem201912341” and the protocol is “jserialcomm://cu.usbmodem201912341:115200”. This indicates UART @ 115200 baud.
- I can’t see anything relevant at /dev. The full list from
System.cmd("ls", ["/dev"])is:
pmsg0
rfkill
mem
null
zero
full
random
urandom
kmsg
tty
console
tty0
vcs
vcsu
vcsa
vcs1
vcsu1
vcsa1
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
tty12
tty13
tty14
tty15
tty16
tty17
tty18
tty19
tty20
tty21
tty22
tty23
tty24
tty25
tty26
tty27
tty28
tty29
tty30
tty31
tty32
tty33
tty34
tty35
tty36
tty37
tty38
tty39
tty40
tty41
tty42
tty43
tty44
tty45
tty46
tty47
tty48
tty49
tty50
tty51
tty52
tty53
tty54
tty55
tty56
tty57
tty58
tty59
tty60
tty61
tty62
tty63
gpiochip0
fb0
ptmx
ttyprintk
hwrng
vc-mem
vcio
gpiomem
ram0
ram1
ram2
ram3
ram4
ram5
ram6
ram7
ram8
ram9
ram10
ram11
ram12
ram13
ram14
ram15
loop-control
loop0
loop1
loop2
loop3
loop4
loop5
loop6
loop7
vchiq
ttyAMA0
ttyS0
watchdog
watchdog0
spidev0.0
spidev0.1
i2c-1
mmcblk0
mmcblk0p1
mmcblk0p2
mmcblk0p3
pts
shm
rootdisk0
rootdisk0p3
rootdisk0p2
rootdisk0p1
log
vcsm-cma
video10
video11
video12
video18
video31
media0
video13
video14
video15
video16
media1
video20
video21
video22
video23
media2
snd
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 2- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
jjcarstens
Not all devices are required to respond to the enumerate request, so
Circuits.UART.enumeratemay not return anything. If that is the case, I would rundmesgbefore and after connecting the device (assuming USB?) and noting the difference. It should should were it connects and what/devyou need to use.alexslade
So I spent a while debugging dmesg and getting absolutely nothing, before realising… I’m on a RPI Zero, and I remembered has some funny OTG stuff on the usb port.
I reclaimed a rpi4 from my homelab and tried on there, and I now have the device being enumerated.
Thanks for helping and pointing me in the right direction.