Okay, I think I'm in business. I missed the line in that documentation page that mentioned this:
The xhc−whb04b−6 executable needs permission for reading the pendant’s USB device. There may be the need for additional udev rules. If so, this file /etc/udev/rules.d/99−xhc−whb04b−6.rules should be created with the single line ATTR{idProduct}=="eb93", ATTR{idVendor}=="10ce", MODE="0666", OWNER="root", GROUP="plugdev".
So based on the fact that I was missing the rules file mentioned in the earlier post and that snip of text I gathered I needed to create it. I did change the group from "plugdev" to "dialout" following the pattern of the other devices but not sure that makes a difference. I tried again and no joy. But I decided to give it a reboot in case something had not picked up on the rules or the device file lingered after unplugging somehow.
After the reboot there was rejoicing:
Code:
~$ halrun
halcmd: loadusr -W xhc-whb04b-6 -H
halcmd: show pin
Component Pins:
Owner Type Dir Value Name
4 s32 OUT 0 whb.axis.a.jog-counts
4 bit OUT FALSE whb.axis.a.jog-enable
4 float OUT 0 whb.axis.a.jog-scale
4 bit OUT FALSE whb.axis.a.jog-vel-mode
4 s32 OUT 0 whb.axis.b.jog-counts
4 bit OUT FALSE whb.axis.b.jog-enable
4 float OUT 0 whb.axis.b.jog-scale
4 bit OUT FALSE whb.axis.b.jog-vel-mode
4 s32 OUT 0 whb.axis.c.jog-counts
4 bit OUT FALSE whb.axis.c.jog-enable
4 float OUT 0 whb.axis.c.jog-scale
4 bit OUT FALSE whb.axis.c.jog-vel-mode
4 s32 OUT 0 whb.axis.x.jog-counts
4 bit OUT TRUE whb.axis.x.jog-enable
4 float OUT 0 whb.axis.x.jog-scale
4 bit OUT FALSE whb.axis.x.jog-vel-mode
4 s32 OUT 0 whb.axis.y.jog-counts
4 bit OUT FALSE whb.axis.y.jog-enable
4 float OUT 0 whb.axis.y.jog-scale
4 bit OUT FALSE whb.axis.y.jog-vel-mode
4 s32 OUT 0 whb.axis.z.jog-counts
4 bit OUT FALSE whb.axis.z.jog-enable
4 float OUT 0 whb.axis.z.jog-scale
4 bit OUT FALSE whb.axis.z.jog-vel-mode
4 bit OUT FALSE whb.button.feed-minus
4 bit OUT FALSE whb.button.feed-plus
... snip ...
4 float IN 0 whb.halui.spindle-speed-cmd
4 bit OUT FALSE whb.halui.spindle.decrease
4 bit OUT FALSE whb.halui.spindle.forward
4 bit OUT FALSE whb.halui.spindle.increase
4 bit IN FALSE whb.halui.spindle.is-on
4 bit OUT FALSE whb.halui.spindle.reverse
4 bit OUT FALSE whb.halui.spindle.start
4 bit OUT FALSE whb.halui.spindle.stop
4 bit OUT TRUE whb.pendant.is-connected
4 bit OUT FALSE whb.pendant.is-sleeping
And then testing to see if I was getting data from the device:
Code:
~$ /usr/bin/xhc-whb04b-6 -e
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x00 text='' altText=''} axisButton={{{key={code=0x11 text='X' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x11 text='X' altText=''} axisButton={{{key={code=0x11 text='X' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x0e text='mode-continuous' altText='macro-15'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x0e text='mode-continuous' altText='macro-15'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x0f text='mode-step' altText='macro-16'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x0f text='mode-step' altText='macro-16'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x0e text='mode-continuous' altText='macro-15'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x0e text='mode-continuous' altText='macro-15'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button pressed event metaButton={key={code=0x0c text='fn' altText='<unused>'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x0c text='fn' altText='<unused>'} modifier={code=0x00 text='' altText=''}}
pndnt button pressed event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x0c text='fn' altText='<unused>'}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x01 text='reset' altText='macro-11'} modifier={code=0x0c text='fn' altText='<unused>'}}
pndnt button pressed event metaButton={key={code=0x0c text='fn' altText='<unused>'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt button released event metaButton={key={code=0x0c text='fn' altText='<unused>'} modifier={code=0x00 text='' altText=''}}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x11 text='X' altText=''} axisButton={{{key={code=0x12 text='Y' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x12 text='Y' altText=''} axisButton={{{key={code=0x12 text='Y' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=1 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x12 text='Y' altText=''} axisButton={{{key={code=0x13 text='Z' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x13 text='Z' altText=''} axisButton={{{key={code=0x13 text='Z' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=2 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x13 text='Z' altText=''} axisButton={{{key={code=0x14 text='A' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x14 text='A' altText=''} axisButton={{{key={code=0x14 text='A' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=3 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x14 text='A' altText=''} axisButton={{{key={code=0x13 text='Z' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x13 text='Z' altText=''} axisButton={{{key={code=0x13 text='Z' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=2 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x13 text='Z' altText=''} axisButton={{{key={code=0x12 text='Y' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x12 text='Y' altText=''} axisButton={{{key={code=0x12 text='Y' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=1 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x12 text='Y' altText=''} axisButton={{{key={code=0x11 text='X' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x11 text='X' altText=''} axisButton={{{key={code=0x11 text='X' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x11 text='X' altText=''} axisButton={{{key={code=0x06 text='OFF' altText=''}}} isPermitted=FALSE}
pndnt axis active event axis={code=0x06 text='OFF' altText=''} axisButton={{{key={code=0x06 text='OFF' altText=''}}} isPermitted=FALSE}
pndnt wheel total counts {counts=NA activeCounter=UNDEFINED isLeadActive=0}
pndnt failed to interpret axis code feed axisCode={?}
pndnt axis inactive event axis={code=0x06 text='OFF' altText=''} axisButton={{{key={code=0x11 text='X' altText=''}}} isPermitted=TRUE}
pndnt axis active event axis={code=0x11 text='X' altText=''} axisButton={{{key={code=0x11 text='X' altText=''}}} isPermitted=TRUE}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt feed inactive event feed={code=0x00 text='' altText=''} feedButton={{{key={code=0x1b text='10' altText='100%'}}} isPermitted=TRUE stepSize=100 stepMode=0x00}
pndnt feed active event feed={code=0x1b text='10' altText='100%'} feedButton={{{key={code=0x1b text='10' altText='100%'}}} isPermitted=TRUE stepSize=100 stepMode=0x00}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt feed inactive event feed={code=0x1b text='10' altText='100%'} feedButton={{{key={code=0x1a text='5' altText='60%'}}} isPermitted=TRUE stepSize=60 stepMode=0x00}
pndnt feed active event feed={code=0x1a text='5' altText='60%'} feedButton={{{key={code=0x1a text='5' altText='60%'}}} isPermitted=TRUE stepSize=60 stepMode=0x00}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt feed inactive event feed={code=0x1a text='5' altText='60%'} feedButton={{{key={code=0x10 text='1' altText='30%'}}} isPermitted=TRUE stepSize=30 stepMode=0x00}
pndnt feed active event feed={code=0x10 text='1' altText='30%'} feedButton={{{key={code=0x10 text='1' altText='30%'}}} isPermitted=TRUE stepSize=30 stepMode=0x00}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt feed inactive event feed={code=0x10 text='1' altText='30%'} feedButton={{{key={code=0x0f text='0.1' altText='10%'}}} isPermitted=TRUE stepSize=10 stepMode=0x00}
pndnt feed active event feed={code=0x0f text='0.1' altText='10%'} feedButton={{{key={code=0x0f text='0.1' altText='10%'}}} isPermitted=TRUE stepSize=10 stepMode=0x00}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt feed inactive event feed={code=0x0f text='0.1' altText='10%'} feedButton={{{key={code=0x0e text='0.01' altText='5%'}}} isPermitted=TRUE stepSize=5 stepMode=0x00}
pndnt feed active event feed={code=0x0e text='0.01' altText='5%'} feedButton={{{key={code=0x0e text='0.01' altText='5%'}}} isPermitted=TRUE stepSize=5 stepMode=0x00}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
pndnt feed inactive event feed={code=0x0e text='0.01' altText='5%'} feedButton={{{key={code=0x0d text='0.001' altText='2%'}}} isPermitted=TRUE stepSize=2 stepMode=0x00}
pndnt feed active event feed={code=0x0d text='0.001' altText='2%'} feedButton={{{key={code=0x0d text='0.001' altText='2%'}}} isPermitted=TRUE stepSize=2 stepMode=0x00}
pndnt wheel total counts {counts=0 activeCounter=0 isLeadActive=0}
So, tommylight was right about permissions it just was not immediately obvious that the device file was not going to have the right permissions. In fact, I'm completely lost as to where that device file even really is. But this is good. I think I can get on with loading it and connecting it up now!