ArtNet send

adrianward's picture

Hello!

I've got the 7 day demo of the Art-Net tools installed and am already on day 5 so I'm short on time and have been pulling my hair out for about 3 of those. Oh no!

I've got an Artistic Licence NetLynx O/P on loan from the manufacturers to test my setup and I've configured my Ethernet port in Mac OS X to 2.0.0.0/8 and 10.0.0.0/8 and neither work, regardless of my system config and patch parameters. In both cases I used a netmask of 255.0.0.0. The device is powered up and Mac OS X reports the interface active when it's plugged in, and inactive when not so I believe my Ethernet settings are right.

The ArtNet-SendReceive.qtz tester only works if have my second Ethernet connection active (currently configured for 192.168.5.0/24) and the COM (for communication) light never flashes on the device, which makes me suspicious that the UDP packets are never actually making it to the box. I'm speaking to the manufacturers to get any support from their side but they are pretty much unable to help with anything non-Windows based so I'm kind of on my own unless I can get some support here. I'm about to go to bed right now but I'll perform a tcpdump tomorrow.

Incidentally, we do have a working solution using an Enttec USB DMX Pro box and Kineme's Serial Output patch, but like others have expressed here, I'm not convinced by the FTDI driver and the results, whilst mostly working occasionally flicker unexpectedly. Hence I'd really like to get the Artistic Licence box working. They're also really friendly local people so I really want to use their kit instead of Enttec's.

Has anyone else got Art-Net Tools working with Artistic Licence hardware?

Cheers,

Ade. Clay Interactive Ltd.

smokris's picture
Re: ArtNet send

Hi, Adrian!

Some thoughts:

  • Do you have a Windows box on which you could get the NetLynx working to begin with (with the manufacturer's help if necessary)? Try this first if possible.
  • Do you know the IP address of the NetLynx? According to the manual, it looks like it defaults to subnet 2/8, but if you connect jumper JP4, it switches to subnet 10/8.
  • When configuring your Mac's IP address, don't use the zeroth IP address, as that's reserved to refer to the network as a whole. Use something like 2.0.0.1 as the IP address, and specify 255.0.0.0 as the netmask.

Do let us know how the tcpdumping goes, and please post the ifconfig output and/or screenshots of your Network System Preferences panes.

franz's picture
Re: ArtNet send

worst case scenario if nothing works but you ABSOLUTELY need DMX output for QC: exchange your Enttec DMX USB pro for a Enttec Open DMX (over ethernet). It works out of the box and you don't have to worry about FTDI as it is ethernet based...

note to smokris: maybe you should add on the KnM Artnet page the different interfaces the patch has been reported to work with.

adrianward's picture
Re: ArtNet send

Hi and thanks for all the comments. Here's an update...

I found out the Net-Lynx IP by using tcpdump whilst cycling it's power... when it's LEDs flash on power up, three packets are sent:

AdeMacPro:~ adrian$ sudo tcpdump -i en0 -vvv -K -n -s 0
10:41:41.318779 IP (tos 0x0, ttl 32, id 1, offset 0, flags [none], proto UDP (17), length 236) 2.23.4.113.6454 > 2.255.255.255.6454: [udp sum ok] UDP, length 208
10:41:41.493426 IP (tos 0x0, ttl 32, id 2, offset 0, flags [none], proto UDP (17), length 56) 2.23.4.113.6454 > 2.255.255.255.6454: [udp sum ok] UDP, length 28
10:41:41.493672 IP (tos 0x0, ttl 32, id 3, offset 0, flags [none], proto UDP (17), length 56) 2.23.4.113.6454 > 2.255.255.255.6454: [udp sum ok] UDP, length 28

I've captured these packets to a dump using sudo tcpdump -i en0 -vvv -K -n -s 0 -w ~/ArtNet-tcpdump-AdeMacPro-20090319-PowerUp.dmp ip host 2.23.4.113 and they can be downloaded from http://services.clayinteractive.co.uk/13/01/01/01Tech/ArtNet-tcpdump-Ade...

Thus the device's IP is 2.23.4.113. I disconnected all network connections and plugged the Net-Lynx into my Mac Pro ethernet port 1, and configured it to be 2.23.4.1, mask 255.0.0.0.

AdeMacPro:~ adrian$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
   inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
   inet 127.0.0.1 netmask 0xff000000 
   inet6 ::1 prefixlen 128 
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
   inet 2.23.4.1 netmask 0xff000000 broadcast 2.255.255.255
   ether 00:17:f2:06:65:bc 
   media: 10baseT/UTP <half-duplex> status: active
   supported media: autoselect 10baseT/UTP <half-duplex> 10baseT/UTP <full-duplex> 10baseT/UTP <full-duplex,hw-loopback> 10baseT/UTP <full-duplex,flow-control> 100baseTX <half-duplex> 100baseTX <full-duplex> 100baseTX <full-duplex,hw-loopback> 100baseTX <full-duplex,flow-control> 1000baseT <full-duplex> 1000baseT <full-duplex,hw-loopback> 1000baseT <full-duplex,flow-control>
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
   ether 00:17:f2:06:65:bd 
   media: autoselect status: inactive
   supported media: autoselect 10baseT/UTP <half-duplex> 10baseT/UTP <full-duplex> 10baseT/UTP <full-duplex,hw-loopback> 10baseT/UTP <full-duplex,flow-control> 100baseTX <half-duplex> 100baseTX <full-duplex> 100baseTX <full-duplex,hw-loopback> 100baseTX <full-duplex,flow-control> 1000baseT <full-duplex> 1000baseT <full-duplex,hw-loopback> 1000baseT <full-duplex,flow-control>
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 2030
   lladdr 00:16:cb:ff:fe:76:b0:6a 
   media: autoselect <full-duplex> status: inactive
   supported media: autoselect <full-duplex>

I've used tcpdump again to capture some of the packets whilst running the ArtNet-SendReceive.qtz demo (which is no longer working since I've unplugged my LAN) and can show that the UDP packets are atleast being sent out by the Kineme patch:

AdeMacPro:~ adrian$ sudo tcpdump -i en0 -vvv -K -n -s 0 -w ~/ArtNet-tcpdump-AdeMacPro-20090319.dmp 
Password:
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C38 packets captured
67 packets received by filter
0 packets dropped by kernel
 
AdeMacPro:~ adrian$ tcpdump -r ~/ArtNet-tcpdump-AdeMacPro-20090319.dmp -K -vvvv
reading from file /Users/adrian/ArtNet-tcpdump-AdeMacPro-20090319.dmp, link-type EN10MB (Ethernet)
10:58:24.243540 IP (tos 0x0, ttl 64, id 22368, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.275280 IP (tos 0x0, ttl 64, id 9518, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.310084 IP (tos 0x0, ttl 64, id 44348, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.343412 IP (tos 0x0, ttl 64, id 65304, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.376737 IP (tos 0x0, ttl 64, id 37973, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.410135 IP (tos 0x0, ttl 64, id 26649, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.443424 IP (tos 0x0, ttl 64, id 39244, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.476741 IP (tos 0x0, ttl 64, id 35841, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.510293 IP (tos 0x0, ttl 64, id 41038, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.543443 IP (tos 0x0, ttl 64, id 52227, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.576772 IP (tos 0x0, ttl 64, id 53768, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.610085 IP (tos 0x0, ttl 64, id 44914, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.643422 IP (tos 0x0, ttl 64, id 30504, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.676755 IP (tos 0x0, ttl 64, id 24413, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.710114 IP (tos 0x0, ttl 64, id 65134, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.743430 IP (tos 0x0, ttl 64, id 25396, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.776759 IP (tos 0x0, ttl 64, id 45423, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.810086 IP (tos 0x0, ttl 64, id 42268, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.843452 IP (tos 0x0, ttl 64, id 47724, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.876847 IP (tos 0x0, ttl 64, id 14899, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.910100 IP (tos 0x0, ttl 64, id 17940, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.943459 IP (tos 0x0, ttl 64, id 37420, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:24.976759 IP (tos 0x0, ttl 64, id 24092, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.010090 IP (tos 0x0, ttl 64, id 25670, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.043417 IP (tos 0x0, ttl 64, id 22318, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.076740 IP (tos 0x0, ttl 64, id 3670, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.110082 IP (tos 0x0, ttl 64, id 18782, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.143438 IP (tos 0x0, ttl 64, id 49497, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.176742 IP (tos 0x0, ttl 64, id 13373, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.210115 IP (tos 0x0, ttl 64, id 4707, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.243457 IP (tos 0x0, ttl 64, id 22623, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.276782 IP (tos 0x0, ttl 64, id 10879, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.310116 IP (tos 0x0, ttl 64, id 64831, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.343474 IP (tos 0x0, ttl 64, id 43779, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.376781 IP (tos 0x0, ttl 64, id 48761, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.410115 IP (tos 0x0, ttl 64, id 13624, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.443457 IP (tos 0x0, ttl 64, id 41035, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530
10:58:25.476898 IP (tos 0x0, ttl 64, id 37130, offset 0, flags [none], proto UDP (17), length 558) 2.23.4.1.51316 > 2.255.255.255.6454: [udp sum ok] UDP, length 530

So I know that the Kineme patch is sending UDP packets. Still no flashing COM light on the Net-Lynx though!

If anyone is interested in the actual dump, it can be obtained from http://services.clayinteractive.co.uk/13/01/01/01Tech/ArtNet-tcpdump-Ade...

Any further thoughts or diagnosis would be most welcomed.

Thanks!

Ade.

smokris's picture
Re: ArtNet send

Good point. I've added a known hardware compatibility section.

smokris's picture
Re: ArtNet send

Adrian -

Could you try connecting an ethernet switch between the Mac and the Net-Lynx, to see if the switch's lights flash when ArtDmx packets are theoretically being sent? This'll help us determine if the packets actually make it out of the Mac.

Also could you post a tcpdump capture of packets from some other device that successfully sends ArtDmx packets to the Net-Lynx? We can then compare these packets to those sent by our plugin, to see if there is some protocol incompatibility.

adrianward's picture
Re: ArtNet send

I've connected a switch between the two and can confirm the lights are blinking when QC is sending out packets, so it's not an Ethernet setup problem.

Artistic Licence support are saying that the COM light will flash every time a valid ArtNet packet is received so it's likely the packets are not recognised as valid, indicating a protocol problem. Since Artistic Licence developed the standard, I'm assuming you guys used their specification when authoring the plug-in?

Unfortunately I don't have any other ArtNet capable devices so I couldn't packet sniff anything else to provide it. I am providing a packet sniff of the packets coming out of QC to Artistic Licence, hopefully that will help them analyse what the problem is. If that's the case, I'll feedback here.

adrianward's picture
Re: ArtNet send

Update: I've installed Artistic Licence's DMX-Workshop software on a Windows XP software and confirmed it can operate the RGB lights I've got with the Net-Lynx, so I've ruled out any hardware issues.

I've also used the same software to dump some output diagnostics about the UDP packets that it is sending.

------------------------------------------------------------------------------------------------------------8:57:12 AM
From 2.0.0.1(6454) To 2.23.4.113(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {2 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=7D, Ch1=7D, Ch2=7D, Ch3=7D, Ch4=7D, Ch5=7D, Ch6=7D, Ch7=7D, Ch8=7D,  ... Ch512=7D, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [02], [00], [00], [02], [00], [7D], [7D], [7D], [7D], [7D], [7D], [7D], [7D], [7D], [7D], [7D], [7D], [7D], [7D], ... } //Data )
------------------------------------------------------------------------------------------------------------8:57:12 AM
From 2.0.0.1(6454) To 2.23.4.113(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {2 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=7E, Ch1=7E, Ch2=7E, Ch3=7E, Ch4=7E, Ch5=7E, Ch6=7E, Ch7=7E, Ch8=7E,  ... Ch512=7E, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [02], [00], [00], [02], [00], [7E], [7E], [7E], [7E], [7E], [7E], [7E], [7E], [7E], [7E], [7E], [7E], [7E], [7E], ... } //Data )
------------------------------------------------------------------------------------------------------------8:57:12 AM
From 2.0.0.1(6454) To 2.23.4.113(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {2 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=7F, Ch1=7F, Ch2=7F, Ch3=7F, Ch4=7F, Ch5=7F, Ch6=7F, Ch7=7F, Ch8=7F,  ... Ch512=7F, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [02], [00], [00], [02], [00], [7F], [7F], [7F], [7F], [7F], [7F], [7F], [7F], [7F], [7F], [7F], [7F], [7F], [7F], ... } //Data )
------------------------------------------------------------------------------------------------------------8:57:12 AM
From 2.0.0.1(6454) To 2.23.4.113(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {2 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=80, Ch1=80, Ch2=80, Ch3=80, Ch4=80, Ch5=80, Ch6=80, Ch7=80, Ch8=80,  ... Ch512=80, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [02], [00], [00], [02], [00], [80], [80], [80], [80], [80], [80], [80], [80], [80], [80], [80], [80], [80], [80], ... } //Data )
------------------------------------------------------------------------------------------------------------8:57:12 AM
From 2.0.0.1(6454) To 2.23.4.113(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {2 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=81, Ch1=81, Ch2=81, Ch3=81, Ch4=81, Ch5=81, Ch6=81, Ch7=81, Ch8=81,  ... Ch512=81, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [02], [00], [00], [02], [00], [81], [81], [81], [81], [81], [81], [81], [81], [81], [81], [81], [81], [81], [81], ... } //Data )
------------------------------------------------------------------------------------------------------------8:57:12 AM
From 2.0.0.1(6454) To 2.23.4.113(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {2 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=82, Ch1=82, Ch2=82, Ch3=82, Ch4=82, Ch5=82, Ch6=82, Ch7=82, Ch8=82,  ... Ch512=82, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [02], [00], [00], [02], [00], [82], [82], [82], [82], [82], [82], [82], [82], [82], [82], [82], [82], [82], [82], ... } //Data )
------------------------------------------------------------------------------------------------------------8:57:12 AM

This dump doesn't give the full packet contents but it does give the header bytes and a quick comparison between this and the packets coming out of Kineme's plug-in suggests byte 13 is 00 when output by the plug-in but 02 when output by DMX-Workshop. Is this significant?

A typical packet coming out of Kineme ArtNet Sender:

Headerlength: 530 bytes, Data follows:
 
00000   41 72 74 2d 4e 65 74 00  00 50 00 0e 00 00 00 00    Art-Net..P......
00010   02 00 00 0c 00 00 00 23  ae 00 00 00 00 00 11 d6    .......#........
00020   00 00 00 d8 08 5f 00 00  00 00 00 00 00 00 00 00    ....._..........
00030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00090   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
000a0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
000b0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
000c0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
000d0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
000e0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
000f0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
001a0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
001b0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
001c0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
001d0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
001e0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
001f0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00200   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
00210   00 00                                               ..

cwright's picture
Re: ArtNet send

Interesting (and thanks for the analysis) -- byte 13 is the "Physical" byte -- according to their specs, it's informational only, and they don't describe what it should be. All other header information is identical.

I'll make a build that lets you set this arbitrarily, so you can set it to 2 and see if that makes it work.

adrianward's picture
Re: ArtNet send

I was going to edit my original post to avoid using decimal bytes but was too slow! For clarity, the "physical" byte is at offset 0x0D (right?).

Also - just quickly - I noticed that offset 0x12 appears be the first DMX data byte according to DMX-Workshop but in Kineme's implementation is seems to be offset 0x13.

This packet has come out from Kineme ArtNet Sender. Note how the first DMX channel is at offset 0x13.

Headerlength: 530 bytes, Data follows:
 
00000   41 72 74 2d 4e 65 74 00  00 50 00 0e 00 00 00 00    Art-Net..P......
00010   02 00 00 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00020   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00030   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00040   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00050   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00060   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00070   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00080   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00090   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
000a0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
000b0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
000c0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
000d0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
000e0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
000f0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00100   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00110   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00120   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00130   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00140   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00150   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00160   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00170   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00180   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00190   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
001a0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
001b0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
001c0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
001d0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
001e0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
001f0   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00200   83 83 83 83 83 83 83 83  83 83 83 83 83 83 83 83    ................
00210   83 83                                               ..

adrianward's picture
Re: ArtNet send - DMX-Workshop on XP recognising QC plug-in DMX!

It is sporadic but DMX-Workshop on a PC is recognising ArtDMX packets being generated from the Kineme plug-in (beta2). It's built-in logger is noting that the source port might be an issue but I can see the index offset issue is now resolved.

The regression with beta2 is that these packets are only appearing at random intervals.

From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=54, Ch1=54, Ch2=54, Ch3=54, Ch4=54, Ch5=54, Ch6=54, Ch7=54, Ch8=54,  ... Ch512=54, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:19 AM
From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=54, Ch1=54, Ch2=54, Ch3=54, Ch4=54, Ch5=54, Ch6=54, Ch7=54, Ch8=54,  ... Ch512=54, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:23 AM
From 2.0.0.1(6454) To 2.255.255.255(6454) ArtPoll, Enquiry to Art-Net device(s)
 {0x2000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x02 //TalkToMe},  {0 //Pad} }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [20], [00], [0E], [02], [00], [00], [00], [1E], [00], [00], [00], [01], [00], [54], [54], [54], [54], [54], [54], [54], [54], [54], [54], ... } //Data )
------------------------------------------------------------------------------------------------------------6:05:23 AM
From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=59, Ch1=59, Ch2=59, Ch3=59, Ch4=59, Ch5=59, Ch6=59, Ch7=59, Ch8=59,  ... Ch512=59, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:27 AM
From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=59, Ch1=59, Ch2=59, Ch3=59, Ch4=59, Ch5=59, Ch6=59, Ch7=59, Ch8=59,  ... Ch512=59, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:31 AM
From 2.0.0.1(6454) To 2.255.255.255(6454) ArtPoll, Enquiry to Art-Net device(s)
 {0x2000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x02 //TalkToMe},  {0 //Pad} }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [20], [00], [0E], [02], [00], [00], [00], [1E], [00], [00], [00], [00], [8D], [59], [59], [59], [59], [59], [59], [59], [59], [59], [59], ... } //Data )
------------------------------------------------------------------------------------------------------------6:05:31 AM
From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=5D, Ch1=5D, Ch2=5D, Ch3=5D, Ch4=5D, Ch5=5D, Ch6=5D, Ch7=5D, Ch8=5D,  ... Ch512=5D, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [5D], [5D], [5D], [5D], [5D], [5D], [5D], [5D], [5D], [5D], [5D], [5D], [5D], [5D], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:35 AM
From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=61, Ch1=61, Ch2=61, Ch3=61, Ch4=61, Ch5=61, Ch6=61, Ch7=61, Ch8=61,  ... Ch512=61, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:39 AM
From 2.0.0.1(6454) To 2.255.255.255(6454) ArtPoll, Enquiry to Art-Net device(s)
 {0x2000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x02 //TalkToMe},  {0 //Pad} }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [20], [00], [0E], [02], [00], [00], [00], [1E], [00], [00], [00], [01], [00], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], ... } //Data )
------------------------------------------------------------------------------------------------------------6:05:40 AM
From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=61, Ch1=61, Ch2=61, Ch3=61, Ch4=61, Ch5=61, Ch6=61, Ch7=61, Ch8=61,  ... Ch512=61, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], [61], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:43 AM
From 2.0.0.7(49636) To 2.255.255.255(6454) ArtDmx, Dmx512 data
 {0x5000 //OpCode},  {0 //Prot Vers Hi},  {14 //Prot Vers Lo}, 
 {0x00 //Sequence},  {0 //Physical},  {0x00 //Universe},  {512 //Channel Count}, 
 {Ch0=65, Ch1=65, Ch2=65, Ch3=65, Ch4=65, Ch5=65, Ch6=65, Ch7=65, Ch8=65,  ... Ch512=65, }
 Raw Data = { [41], [72], [74], [2D], [4E], [65], [74], [00], [00], [50], [00], [0E], [00], [00], [00], [00], [02], [00], [65], [65], [65], [65], [65], [65], [65], [65], [65], [65], [65], [65], [65], [65], ... } //Data )
>> Error in source port number
------------------------------------------------------------------------------------------------------------6:05:47 AM

Alas, still no activity on the Net-Lynx.

cwright's picture
Re: ArtNet send - DMX-Workshop on XP recognising QC plug-in ...

I noted the random-send problem too -- not sure exactly why it happened, but a make-clean/recompile seemed to bring it back to life on my machine. I'm making some more changes/fixes, and will get you another beta shortly.

adrianward's picture
Re: ArtNet send - DMX-Workshop on XP recognising QC plug-in ...

Very quickly - the Artistic Licence support has clarified the problem:

Quote:
With the snapshot of the plug in I think we have found the problem.

For historical reasons Art-Net uses only one port which must be 0x1936 (6454). If a Net-Lynx receives something from a different port it will ignore it.

Can you pass this onto the other company and ask them to set their port to the correct value. It should all start working then.

Please let me know how you get on.

So, thanks to Simon Hobday at Artistic Licence for clarifying this.

mrpackethead's picture
Re: ArtNet send

adrianward wrote:
Hello!

Incidentally, we do have a working solution using an Enttec USB DMX Pro box and Kineme's Serial Output patch, but like others have expressed here, I'm not convinced by the FTDI driver and the results, whilst mostly working occasionally flicker unexpectedly.

Hi, would you be able to give me a little detail of how you did this? I'd be very interested in this... I probably can live with a little flicker..

Other than using teh serial output patch, did you have to do anything else?

regards

A.

adrianward's picture
Re: ArtNet send

Sure, we used a JavaScript patch to compute the DMX channel values, and at the same time build a string containing the packet data that the Enttec box understands (we wrangled with their poor documentation for a long time to get this right!). The packet is spat out as a hex string, which is fed to the Serial Output's "Binary Data" input, and the "Binary Send Signal" is oscillated every other frame to cause it to output the bytes.

For reference, the packet format for Enttec USB DMX Pro boxes is formed like so:

Byte Size      Message Description
1             Start of message delimiter, hex 7E. 
1             Label to identify type of message
               (06 = Output Only Send DMX Packet Request)
1             Data length LSB. Valid range for data length is 25 to 600.
1             Data length MSB. 
data_length    Data bytes. 
1             End of message delimiter, hex E7. 

The wrangle we had was that the first byte of the data bytes must always be 00, since this doesn't map to DMX channel 1.

A typical packet might look like:

7E06210000[32 hex bytes of DMX channel data starting at DMX channel 1]E7

To make the hex bytes you can use a simple Javascript function:

function dec2hex(d) {
   var t1 = 0;
   var t2 = "";
   if (!isNaN(d)) {
      t1 = Math.floor(d);
   }
   t2 = t1.toString(16).toUpperCase();
   if (t2.length == 1) {
      return "0"+t2;
   } else {
      return t2;
   }
}

Hope that helps!

A.

mrpackethead's picture
Re: ArtNet send

Thanks!! I'll ahve a play with this and see how i get on.

steve holmes's picture
Re: ArtNet send - DMX-Workshop on XP recognising QC plug-in ...

Hi I was wondering if the ArtNet patch had been modified to work with Artistic License equipment I have a Ether-Lynx box I would like to work with QC but I cannot get it to work, so was wondering if this issue still existed. I have fully tested it and I can get the Ether-Lynx receiving data from MagicQ in X11 environment but nothing with QC. Cheers Steve

smokris's picture
Re: ArtNet send - DMX-Workshop on XP recognising QC plug-in ...

Note on this old thread for posterity: the sending-port issue was "corrected" as of Art-Net Tools version 1.2.

("Corrected", as in, our plugin now adheres to the letter of the Art-Net specification, however the specification itself violates how IP networks conventionally work.)