[sharing] My take on an ENTTEC DMX USB Pro external

Jan M's icon

The good old external from nullmedium is end of life since long. The goto solution for using a DMX USB Pro recently was using the serial object directly.

I wanted to start learning to write Max externals, and I chose to create an external for the DMX USB Pro.

A beta version of the package is available here: https://github.com/janmech/jam/releases/tag/1.0-beta

The package contains 2 externals:

jam.dmxusbpro for sending and receiving DMX data from the interface and
jam.dmxusbpro~ for use with audio signals (sending DMX data only).

To install, download and unpack the zip package and copy it to the Max Packages folder. On first load of the externals Max might ask you to remove the quarantine attribute. Just confirm and continue (I don't have a paid Apple developer account, that's why).

The externals are compiled for MacOS 10.15 and later and should load on Intel and Apple Silicon Macs.

Looking forward for feedback and if there is interest in continuing this little project also collaborators are very welcome!

Alejandro Mosso's icon

Thanks for this!!! I am really looking forward to try it out :)

Jan M's icon

Hello Alejandro,

could you already try it out and did it work for you? I am thinking about moving it from beta to release state. There were already over 30 downloads in GitHub, but I haven't received any feedback yet.

So that could either mean it works for others or it totally doesn't work :)

How is your experience so far?

Xin Wei Sha's icon

Hello Jan M,

jam.dmxusbpro seems to work fine thru my Enttec DMX USB Pro (Firmware V1.43), controlling a U`King Moving Head lamp.

I'm running Max 8.5.4 / Mac OS 14.1.1 / Apple M1 Max.

(Haven't stressed it with torrents of data. Haven't tried jam.dmxusbpro~ .)

By the way, I have to always plug in the USB cable before opening the patcher?

Compliments!

Jan M's icon

Hello Xin Wei Sha,
thanks for your feedback!

It's good to hear that is works for you - especially on Apple Silicon as I only had few possibility to test it on M-Chips on borrowed machines!

Jan M's icon

By the way, I have to always plug in the USB cable before opening the patcher?

that shouldn't be necessary. after plugging in the ENTTEC just send a menu message to refresh the [umenu]

Haesoo Jung's icon

You just saved my life.

Thank you SO MUCH !!

Jan M's icon

Great it is of good use for you. Reading your other post I assume you work on receiving DMX data?

Let me know how it goes for you!

Jan M's icon

I removed the beta tag. New download link:

José Andrés Medina Ochoa's icon

Any ETA on Windows support?

Jan M's icon

Hola José Andrés

I don’t have a Windows computer and also no experience in Windows programming regarding serial ports, therefore I have no plans for a port.

Anyone who wants to jump on board for that is very welcome.

Thomas's icon

Dear Jan M,

this works like a charm on Max 8.6.5 and macOS 15.2 (Apple M2 MacBook Air).

Thanks a million!!!

Jan M's icon

Very happy to hear it! Thanks for the feedback.

stefane's icon

hello, is your jam.dmxusbpro object is only working with a list ? I send many adresses without the list , and it's working only on one and not all... thx

Jan M's icon

Hello Stefane,
I am not sure if I understand you well. What do you mean with 'I send many adresses without the list , and it's working only on one and not all'?

From what I can see in your screenshot you seem to send lists with one channel and one value e.g. [4 $1], [1 $1]. Does this not control the channels 4 or 1 respectively?

stefane's icon

Thank you for your reply! I will test it tomorrow, but it seems that it's only doing the first channel

Jan M's icon

Feel free to share your patch, so I can take a look.

davidestevens's icon

I may be misunderstanding, but the DMX output needs to be a complete list that is sent out every time an update is sent. AFAIK you can't update a single lamp without sending the whole list. (Though maybe that is happening in the part of the patch we can't see?)

Jan M's icon

Yes, in DMX world all channels of the universe are sent out repeatedly. This is to ensure that you if a cable disconnects and then reconnected all fixtures will be in the right position, color etc. right away.

The way the external is programmed is that it updates the values of the channels it receives as messages, while maintaining the values of the other channels. At startup all channel values are set to 0.

After startup for example, if the object receives a message [1 128 4 255] channel 1 will be set to 128 , channel 4 to 255 the rest will remain at 0