#linuxcnc Logs

Apr 26 2024

#linuxcnc Calendar

01:18 AM Deejay: moin
02:35 AM lcnc-relay: <TurBoss> good morning
03:13 AM CaptHindsight: hey TurBoss
03:13 AM lcnc-relay: <TurBoss> hello!
03:13 AM lcnc-relay: <TurBoss> Y
03:13 AM lcnc-relay: <TurBoss> ops
03:13 AM CaptHindsight: how are things?
03:14 AM lcnc-relay: <TurBoss> fine, doing some maintenance
03:14 AM CaptHindsight: how is qtpyvcp going?
03:15 AM lcnc-relay: <TurBoss> well not much activity for now, i hace a super awesome feature i would like to implement but i have a blocking issue... ☹️
03:15 AM lcnc-relay: <TurBoss> i'm fighting with c++ boost and python
03:16 AM lcnc-relay: <TurBoss> found that running python owords freeze the application
03:18 AM CaptHindsight: https://forum.linuxcnc.org/38-general-linuxcnc-questions/50268-trajectory-planner-using-ruckig-lib looks interesting
03:21 AM lcnc-relay: <TurBoss> trying it now
03:21 AM lcnc-relay: <TurBoss> cmake \o/ hurray!
03:22 AM Deejay: re
04:20 AM Tom_L: morning
04:39 AM rigid: is there a way to use emcJointSetHomingParams() from python I'm missing?
04:40 AM rigid: strangely, my HOME_IGNORE_LIMITS parameter is ignored, although I replicate the homing process like in axis, and have axis running & initializing everything
04:42 AM rigid: homing a single axis from the axis-GUI works fine. When I run my script, I get a limit switch error.
04:44 AM rigid: the sequence I got from axis.py is: switch to MODE_MANUAL, force disable TELEOP, unhome(axis), home(axis)
05:08 AM JT-Cave: morning
05:14 AM lcnc-relay: <TurBoss> good moring JT-Cave
05:15 AM rigid: fancy that the all-debug-bits log output of axis.py homing the axis and my script doesn't differ lol
05:33 AM lcnc-relay: <travis_farmer> morning
06:24 AM miss0r: 'gday
06:38 AM * JT-Cave waves at miss0r
06:38 AM miss0r: whats up? anything interresting going on?
06:39 AM JT-Cave: working on my Flex GUI
06:40 AM miss0r: so... you flexin'? :]
06:41 AM JT-Cave: it's a flexible GUI you can have as little or as much as you want with no coding
06:43 AM miss0r: that sounds pretty interresting
06:43 AM miss0r: for the linuxcnc?
06:43 AM JT-Cave: https://gnipsel.com/linuxcnc/flexgui/index.html
06:43 AM JT-Cave: yes
06:44 AM miss0r: nice
06:44 AM miss0r: i should realy get back on the linuxcnc wagon at some point
06:45 AM * rdtsc2 is trying to get on the wagon, but keeps falling off.
06:46 AM miss0r: :] it happens
06:53 AM rdtsc2: FlexGUI looks interesting JT; any photos?
06:55 AM JT-Cave: https://forum.linuxcnc.org/41-guis/51580-flexible-gui?start=11
06:56 AM JT-Cave: scroll down, photos are almost useless because you can make it look like anything you want
06:56 AM JT-Cave: the user builds the gui by dragging and dropping widgets into a mainwindow and giving them the correct name
06:57 AM JT-Cave: https://www.youtube.com/@Gnipsel/videos
06:57 AM JT-Cave: several videos on my putube channel
08:02 AM Tom_L: happy friday
08:09 AM JT-Cave: I'm hoping to get the contactor changed and replace the broken MOV on the baler
08:12 AM * JT-Cave starts his chicken day
08:31 AM rdtsc2: I've seen contactors and solenoids degrade, which then cause the MOV to fail.  Smart to replace them both.
08:47 AM JT-Shop: the MOV was broken by the "expert" repairman... when he broke the lead off
09:02 AM rdtsc2: That's right.  yeah can't run it without
09:02 AM rdtsc2: well could, but not for very long
09:03 AM rdtsc2: before it smokes itself
10:02 AM lcnc-relay: <travis_farmer> well, power flickered and i lost internet... turns out a car hit a pole nearby and took it out... i have internet on my phone-hotspot only
10:09 AM lcnc-relay: <roguish> it'll get fixed in a couple of weeks.....
10:11 AM lcnc-relay: <travis_farmer> hope sooner... i have a useless website store to run...
10:12 AM lcnc-relay: <roguish> best of luck
10:19 AM Unterhaus_ is now known as Unterhausen
10:19 AM Unterhausen: someone ran their car into a pole across town and took out everyone's heat pump. That's when I got a surge protector for the house
10:20 AM lcnc-relay: <roguish> how'd that blow out heat pumps????
10:21 AM lcnc-relay: <roguish> high voltage surge?
10:28 AM lcnc-relay: <skunkworks8841> That is scary
10:38 AM skunkworks: The x's late father constantly would tell the story of his brand new chest freezer getting taken out by a power surge... It had been probably 30 years and he was still salty about it.
11:05 AM rigid: getting linuxcnc to home an axis manually really feels like blackmagic
11:05 AM rigid: ...if you don't spell the right words in the right order, you'll get nonsense error messages
11:05 AM rigid: (and probably some ancient curse)
11:06 AM lcnc-relay: <roguish> rigid: what? in the .ini file?
11:06 AM lcnc-relay: <roguish> it's really pretty easy
11:07 AM lcnc-relay: <roguish> most importantly, RTFM, while you're editing the .ini or .hal files.
11:07 AM rigid: lcnc-relay: nah, I mean without GUI (like python script or telnet client)
11:07 AM rigid: @roguish
11:08 AM lcnc-relay: <roguish> well, yeah. that could be challenging....
11:09 AM lcnc-relay: <roguish> http://linuxcnc.org/docs/devel/html/config/ini-homing.html
11:09 AM lcnc-relay: <travis_farmer> hence why most of us use linuxcnc as is...
11:09 AM rigid: i'm just guessing but atm it seems that python initialization messes with current cycle time
11:10 AM rigid: travis_farmer: yeah, if I could do that I wouldn't choose linuxcnc but something like grblHAL or pycnc
11:10 AM rigid: ...not even sure what it offers what other suits don't do better/easier
11:11 AM rigid: it's the HAL + API i need it for :-/
11:11 AM lcnc-relay: <travis_farmer> linuxcnc is more powerfull than those... but go on, keep deluding yourself
11:12 AM rigid: yeah it's really powerful. especially the homing part.
11:12 AM lcnc-relay: <travis_farmer> don't plame user error on linuxcnc error
11:12 AM lcnc-relay: <travis_farmer> *blame
11:13 AM rigid: it's hardly a user error when I'm having to wade code for debugging.
11:14 AM rigid: "look at the axis code" is the answer given in the forum to stuff like this.
11:14 AM rigid: ...and then you look at the axis.py horror
11:14 AM rigid: show
11:15 AM lcnc-relay: <travis_farmer> it is user error when the user uses it outside the intendid use, and blames the errors on his/her own failings
11:15 AM jpa-: heh, i wonder how many here actually use "linuxcnc as is".. i certainly never have :)
11:15 AM rigid: travis_farmer: you're mixing up "main usecase" with "edge case". Homing using the python API is very much intended use.
11:16 AM Rab: Yeah, the flexibility for using it outside its intended use was a big selling point for me. ;)
11:16 AM lcnc-relay: <travis_farmer> but you use it in the intendid way, jpa-
11:16 AM rigid: plus, "powerful" and "outside intended use" go hand in hand
11:16 AM jpa-: but yeah, it is common enough to hit things that haven't been properly documented.. if you have extra time, you can always contribute to the docs
11:17 AM jpa-: travis_farmer: well, homing from a script could be quite useful for e.g. verifying homing switch repeatability
11:17 AM JT-Cave: rigid, https://github.com/jethornton/flexgui/blob/0.1.3/flexgui/src/libflexgui/commands.py#L23
11:17 AM rigid: jpa-: how would I document that you need to turn off teleop before homing, even if it's already turned off?
11:17 AM Tom_L: 'as is' still covers alot of ground with lcnc
11:17 AM jpa-: rigid: maybe like that?
11:18 AM Rab: I have also had an interest in headless operation in the past; issues that come up are interesting.
11:18 AM rigid: jpa-: like what?
11:18 AM Tom_L: jt's example
11:18 AM * rigid wants to build a COMP_FILE and re-home after each measurement
11:20 AM jpa-: why do you need to re-home for that?
11:20 AM * Tom_L is curious too
11:20 AM rigid: ah, no that doesn't seem to work. I need to teleop(0) set TRAJ_FREE and when in MODE_MANUAL, I get "can't do ... in manual mode" errors
11:21 AM rigid: jpa-: i'd like to ensure that measurements always start from real 0, not what linuxcnc thinks is 0 but actually influenced from backlash/drift/spindle variations etc.
11:21 AM jpa-: sounds weird, if you have such inaccuracy between position feedback (or stepper) and the screw, maybe those should be fixed first
11:22 AM jpa-: backlash should only depend on latest travel direction
11:22 AM CaptHindsight: yeah, it's sloppy to try and fix mechanical sloppy with software
11:22 AM rigid: ehrm, COMP_FILE is for open-loop and there's no way to "fix" backlash, drift or spindle tolerances beyond a certain point
11:22 AM rigid: hence someone invented COMP_FILE
11:23 AM jpa-: yes, but re-homing doesn't do anything about them either
11:23 AM rigid: wait, you guys don't use backlash compensation or comp_file and just rely on "the hardware is accurate enough"?
11:23 AM jpa-: only drift re-homing would do is if your stepper is losing steps or your motor coupling is slipping
11:23 AM JT-Cave: https://github.com/jethornton/flexgui/blob/0.1.3/flexgui/src/libflexgui/commands.py#L60
11:23 AM JT-Cave: look at unhome
11:23 AM jpa-: i have ballscrews, so no, i don't use backlash compensation
11:24 AM rigid: jpa-: re-homing always ends up at the same position (the limit switch) while jogging to 0 won't
11:24 AM jpa-: i don't use comp file because i haven't figured out a measurement method more accurate than the screws tolerance, but it would be interesting to have one
11:24 AM CaptHindsight: if I need more accuracy I use things like lasers or glass scales
11:24 AM jpa-: rigid: why doesn't jogging to 0 return to same position? it definitely should
11:24 AM rigid: my ballscrews also have backlash
11:25 AM jpa-: how much?
11:25 AM rigid: jpa-: it would on a properly calibrated machine. i'm measuring with 26000 dots per inch and it's off quite a few 1/100mm
11:25 AM rigid: not much. but enough for my 32 microstep setup to compensate
11:26 AM jpa-: i would say your sensor is drifting, not the screw
11:26 AM lcnc-relay: <travis_farmer> could be minute thermal deviations
11:26 AM Rab: rigid, is that consistent? Have you mapped the whole screw?
11:27 AM CaptHindsight: https://i.imgur.com/gLwOHAg.png mag scales on each axis and for compensation for drift over temp I used lasers
11:27 AM jpa-: microstep drives usually have some backlash themselves, because the torque gets reduced with small displacements; often that effect is larger than the ballscrew backlash
11:27 AM rigid: jpa-: then why does the sensor stop drifting, when I use the limit switch to find 0?
11:27 AM CaptHindsight: ^^ all servos
11:27 AM rigid: Rab: i'm trying to map the whole screw but manually homing 256 times is a bit of a pita :)
11:27 AM jpa-: rigid: if it does, then your stepper is probably losing steps due to some incorrect settings
11:28 AM Rab: rigid, I see.
11:28 AM rigid: certainly not using steps
11:28 AM jpa-: rigid: i cannot see a way how a properly functioning machine would not return to same position when traveling to same direction, whether calibrated or not
11:28 AM rigid: it works fine when homing before each measurement
11:29 AM jpa-: will you home before each cutting move when running G-code? because if you are drifting then you will drift in actual use too, and screw compensation does not really do anything about drift
11:29 AM rigid: jpa-: you cannot see that an uncalibrated machine startpos != endpos when moving n steps forward and n steps backward?
11:30 AM jpa-: assuming that the move before the first move was backwards too, no, i cannot see
11:30 AM rigid: hm, i'm going to figure why libflexgui works
11:30 AM Tom_L: cause jt wrote it
11:30 AM jpa-: backlash depends on direction, so moving forwards to position X=0 will give different result than moving backwards to X=0
11:31 AM rigid: Tom_L: it does less than axis does for homing. if it works, it must do something differently
11:31 AM jpa-: but that is easy to avoid in your measurements by making a small move to the opposite direction when you need it
11:31 AM CaptHindsight: rigid: what type of setup do you have? 3 axis mill/ gantry (yes/no) etc
11:31 AM jpa-: rigid: if you have axis running, it might also interfere with your python script actions somehow
11:32 AM jpa-: because axis runs commands in response to some events that come from linuxcnc, and your script might trigger those events
11:32 AM CaptHindsight: rigid: have a pic of your setup?
11:32 AM rigid: jpa-: yeah small movement is Plan B (might be smarter). just send microsteps until the sensor senses movement. But since I can't control stepgen, the math is *blargh*
11:33 AM jpa-: rigid: huh, just move e.g. 10 mm; it doesn't matter if you move more than a small move
11:34 AM rigid: jpa-: it sounds so simple, I wonder why there's no documentation or script to create a COMP_FILE, yet
11:34 AM jpa-: i also wonder about the poor documentation for COMP_FILE
11:34 AM rigid: CaptHindsight: sec
11:34 AM Tom_L: because you haven't written one yet
11:34 AM jpa-: the trick to avoid backlash by thinking about movement direction is kind of "machining 101" :)
11:35 AM rigid: jpa-: cool, what is the trick for drift and spindle inaccuracy?
11:36 AM jpa-: drift depends totally on source of drift, i'm not sure why you'd have any
11:36 AM CaptHindsight: better spindle and more rigid machine :)
11:36 AM jpa-: for spindle inaccuracy (i assume this is eccentricity of screw etc.?) the only fix i know about is the comp_file
11:36 AM Tom_L: just throw money at the problem
11:37 AM Tom_L: and if you can work it out, make it somebody else's money
11:39 AM CaptHindsight: Laser Interferometer to comp for thermal drift
11:39 AM Tom_L: we ran lathe parts that required 4 place accuracy and had to adjust the machine throughout the day
11:39 AM rigid: CaptHindsight: https://coderdu.de/share/2024-04-26-18-27-50-280.jpg that's a testbed for a few much bigger machines. it's pretty accurate as is with precision bearings/corrected preload etc.
11:39 AM rigid: CaptHindsight: thermal drift will be compensated by COMP_FILE and A/C
11:40 AM rigid: ...not for this exact machine tho
11:40 AM CaptHindsight: 32 microstep is really pushing it and still wanting accuracy
11:40 AM rigid: yeah, i kinda like the optimum for all that effort
11:40 AM Rab: Ahh, the thermal drift of 80/20
11:41 AM CaptHindsight: why I asked for a pic
11:41 AM rigid: Rab: you probably missed the part where I wrote "not for this exact machine tho" and "testbed"
11:41 AM Tom_L: you want optimum accuracy use cast iron
11:41 AM lcnc-relay: <travis_farmer> even my 48in X 48in machine gets bad thermal drift
11:41 AM CaptHindsight: it's difficult to comp for any drift with those materials even when it's for non-contact
11:42 AM Rab: rigid, I caught that part, but the issues you are seeing are a product of this test platform, correct?
11:42 AM rigid: but that machine on the image has successfully milled steel with 1/20 mm precision...
11:42 AM rigid: Rab: no, it's all & only linuxcnc issues
11:42 AM lcnc-relay: <travis_farmer> mine is for woodworking, so thermal drift is not a huge issue
11:43 AM CaptHindsight: Newton's third law is: For every action, there is an equal and opposite reaction.
11:43 AM rigid: ...steel milling was not exactly fast tho :)
11:46 AM rigid: maybe I just fia and get a bunch of huge glass scale sensors
11:46 AM CaptHindsight: best bet for accuracy with that machine design would be to measure the part after each cut/pass
11:46 AM jpa-: i guess you can calibrate that machine, but honestly i wouldn't expect it to stay in calibration for long..
11:47 AM jpa-: rigid: but if you have any result data from your mouse sensor experiments, i would be interested to see it; i might want to try it for comp_file making myself at some point
11:47 AM Rab: rigid, stepping back from the specifics of the testbed, this level of scrutiny and compensation still won't equal a mechanical solution on a machine that generates significant cutting forces. The cutter will just yank the machine around to the extent of available backlash.
11:47 AM rigid: jpa-: yeah, that's why a script to generate a good COMP_FILE would come in handy :) (the larger machines shouldn't change a lot after initial calibration)
11:48 AM rigid: jpa-: i'm basically just 256 homing cycles away from a working script and some data. (I plan to generate a few COMP_FILEs and then calculating average error between those)
11:49 AM CaptHindsight: and yank the aluminum around like a noodle
11:49 AM jpa-: rigid: i'd be happy with data from just one run :)
11:49 AM rigid: but I already know that this 26k dpi sensor is _pretty_ accurate
11:50 AM jpa-: the "drift" you keep mentioning makes me confused, because i'm really not sure what is drifting in your setup
11:50 AM Tom_L: the aluminum frame will cause as much trouble as anything else in the setup
11:50 AM rigid: Rab: the actual forces on the machine is pretty small. Spindle RPM/feedrate is fine tuned to the tool so that all the force is on the spindle motor and almost no force on the servos. That's what I was told.
11:51 AM CaptHindsight: look at what is holding the spindle in place
11:51 AM jpa-: sounds weird, i get significant cutting forces even when cutting just wood
11:51 AM rigid: Tom_L: 1/20mm precision steel is possible without calibration on this frame
11:52 AM rigid: jpa-: then either your tool is dull or your feedrate too high (that's what I've been told by the engineers)
11:52 AM * rigid is just a simple software guy
11:52 AM Tom_L: but you've had thermal expansion concerns and aluminum isn't good for that
11:52 AM jpa-: rigid: the cutting force gives equal action on the machine axes and the spindle torque
11:52 AM rigid: alu is certainly not ideal
11:52 AM jpa-: it is totally normal to have machine axes see cutting forces of 10+ N
11:53 AM jpa-: PCB milling and other very lightweight tasks will not see significant axis forces
11:54 AM * roycroft votes for dull tooling
11:55 AM rigid: sure. and increased axis forces act negatively either on precision or on wear
11:56 AM rigid: my customer has like a gazillion versions of tools of the same diameter and they use a nifty software to choose the correct one
11:56 AM jpa-: sure, you want to minimize axis forces, as long as you still get the job done; otherwise it is just "the slower you move, the smaller the force" and to get 0 force you can just stop :)
11:56 AM rigid: s/correct/ideal/g
11:57 AM jpa-: the more rigid the machine, the larger cutting forces it can handle while maintaining enough accuracy, and the faster you can cut
11:57 AM rigid: jpa-: yeah, i guess calculating the ideal/most cost effective parameters for that is a pretty large linear equation :-P
11:57 AM jpa-: then when you get to harder materials like steel, there is also the issue that you cannot make a cut without applying enough force to cut the material
11:57 AM rigid: yeah, but there's a limit to rigidity. all those industrial things are _pretty_ heavy
11:58 AM jpa-: so for steel if the machine cannot handle enough cutting force, you end up just rubbing the tool against steel
11:58 AM rigid: that's what I actually wonder, how they vary speed/RPM during the job
11:59 AM rigid: like it seems to make sense to have different RPM when entering/vertical cutting the material than when cutting horizontally
11:59 AM CaptHindsight: https://i.imgur.com/CN4e4F1.jpg for a non-contact application. Software comp would work pretty well for this
11:59 AM jpa-: more expensive CAM software have that feed & RPM variation depending on cut depth and width
11:59 AM lcnc-relay: <travis_farmer> i doubt my machine could mill steel, but can do aluminum...
11:59 AM jpa-: simpler software just uses same values everywhere
12:00 PM rigid: travis_farmer: it probably can with the right tool and low enough feedrate (and maybe cooling)
12:01 PM CaptHindsight: shave a micron or two off at a time, measure, repeat
12:01 PM jpa-: low feedrate doesn't help much, but shallow depth of cut or width of cut helps
12:01 PM lcnc-relay: <travis_farmer> https://jauriarts.org/_matrix/media/v3/download/jauriarts.org/uceBjRHtOSqIncEJyzRdgYVe/20210723_160813.jpg
12:01 PM lcnc-relay: <travis_farmer> old picture... has a ATC spindle now
12:01 PM jpa-: pretty much any machine can cut steel with narrow cuts, but another question whether it is fast enough to be useful for anything practical
12:02 PM jpa-: coated carbide endmills work quite well even without cooling, though air blast is needed to avoid chip recutting
12:04 PM CaptHindsight: https://i.imgur.com/ANGGwVM.jpg https://i.imgur.com/zsxG2mT.jpg used for non-contact applications and we used a microscope to keep it aligned
12:05 PM roycroft: carbide tooling likes no cooling at all or constant cooling
12:05 PM roycroft: intermittent air blasts would cause thermal stress, but a constant air stream is fine
12:06 PM jpa-: i doubt that an air blast is enough to make any significant thermal stress
12:07 PM jpa-: but yeah, spray cooling is often recommended against; for me it has worked fine for uncoated carbide tooling, which is not very usable when used without coolant
12:07 PM jpa-: i don't have coolant recirculation so flood coolant is not an option
12:08 PM CaptHindsight: https://www.youtube.com/watch?v=3oLdOcy_6NA&t=2s
12:08 PM JT-Shop: https://youtu.be/a8GUvpAdOKc?t=236
12:09 PM CaptHindsight: https://www.youtube.com/watch?v=vPu6lN9yJOY
12:13 PM CaptHindsight: https://www.youtube.com/watch?v=cXDNbvY4pWc
12:15 PM CaptHindsight: how to make t-slot frames more rigid https://www.youtube.com/watch?v=CyZTABdpVi8
12:16 PM rdtsc2: Curious, would a "TPM SPI" port on a mini-ITX motherboard work with rt_spi + Mesa 7C80? (as opposed to the usual rt_rpspi + Raspberry Pi 4)
12:18 PM CaptHindsight: rdtsc2: sure
12:19 PM rdtsc2: Nothing funny about "TPM" limiting speed or anything?
12:19 PM rdtsc2: Little data on it
12:19 PM jpa-: does it show up as SPI port in linux?
12:20 PM CaptHindsight: distance from motherboard header to Mesa is limited
12:20 PM jpa-: and yes, it will have some maximum speed that the manufacturer probably doesn't tell, so you need to test
12:22 PM rdtsc2: Just wondering if some small ITX board wouldn't make a better host for the 7C80 than an Rpi4... several have a SPI port, but little details:  https://duckduckgo.com/?q=mini-ITX+SPI+port&t=opera&ia=web
12:23 PM jpa-: why not just use pcie card?
12:23 PM JT-Shop: https://forum.linuxcnc.org/41-guis/51580-flexible-gui?start=20#299125
12:28 PM CaptHindsight: rdtsc2: why not Ethernet and Mesa?
12:30 PM CaptHindsight: rdtsc2: most use the low cost Arm boards with Mesa over Ethernet vs SPI
12:34 PM XXCoder: CaptHindsight: read the feedback on plugin you suggested
12:34 PM CaptHindsight: plugin?
12:35 PM XXCoder: yeah the bypass paywall one
12:35 PM CaptHindsight: oh, from a few days ago
12:35 PM CaptHindsight: what did people say?
12:36 PM XXCoder: yeserday actually. apparently its a fake, theres another one
12:36 PM XXCoder: "This is a fake extension that doesn't work — designed to distract people from using the real addon that has CLEAN in its name"
12:36 PM XXCoder: example
12:37 PM CaptHindsight: buyer beware
12:38 PM * JT-Shop hears a nap calling his name
12:38 PM XXCoder: yeah thats why I always read reviews :) sadly the gitlab dont allow me to see page unless login. too lazy to so whatever
12:42 PM XXCoder: https://github.com/bpc-clone/bypass-paywalls-firefox-clean
12:43 PM CaptHindsight: maybe that explains why my homepage is always going to putin4ever.ru
12:44 PM XXCoder: lol
12:46 PM XXCoder: https://www.reddit.com/r/firefox/comments/1ah2liv/bypass_paywalls_clean_addon/ is how I found it btw
12:49 PM rigid: CaptHindsight: that testbed on the photo needs to be portable. using concrete would make that difficult :)
12:50 PM rigid: but yeah, there are manufacturers that only do granite stands for industrial precision machinery
12:50 PM CaptHindsight: portable and rigid machines are hard to come by
12:50 PM rigid: i think I found a good compromise
12:51 PM CaptHindsight: whatever works for you
12:51 PM rigid: replacing 20x20 by 40x20 where forces hit goes a long way
12:51 PM rigid: and angle brackets also helped a lot
12:51 PM CaptHindsight: you're not the first to attempt this
12:52 PM CaptHindsight: and it's a good way to learn about forces and reactions
12:52 PM rigid: aluminium just isn't ideal. but I guess software can push to physical limits with enough magic :)
12:53 PM rigid: well, if it wasn't for the help of professional engineers, I'd never be able to build it like it ended up
12:55 PM CaptHindsight: how nice would a handheld mill for steel be similar to the Shaper Origin?
12:55 PM rigid: i guess it's pretty close to the cost-optimum. it's all <$500
12:57 PM CaptHindsight: or a large VMC that is inflatable
12:57 PM Rab: CaptHindsight, there was an entertaining and blood-curdling thread on the PM forum about guys who had been maimed by gigantic handheld drills, I guess before they invented mag drills.
12:58 PM Rab: One described drilling into a roof, hitting a lag screw, and being rotated out over the side
12:59 PM Rab: Anyway, I'll pass on the Metal Shaper Origin.
01:00 PM CaptHindsight: I once showed a 100lb woman how to operate a handheld core drill, she was doing fine until a 250lb "guy" showed up to show her how to really do it... he ended up getting his hand slammed against the brick wall when it caught something
01:02 PM CaptHindsight: Rab: sounds like a Buster Keaton scene
01:02 PM rigid: CaptHindsight: inflatable or even foldable would be awesome. the testbed will end up in a school for kids to play with where they need to store it away after use. So I made portability a requirement.
01:02 PM Rab: https://www.practicalmachinist.com/forum/threads/please-help-me-to-identify-this-hand-drill.424419/#post-4189411
01:03 PM rigid: i guess "foldable CNC" is more aerospace league. i suppose NASA would love that.
01:06 PM Rab: It's been done: https://en.wikipedia.org/wiki/Canadarm2
01:06 PM rigid: hardly a VMC
01:06 PM rigid: or cnc mill for that matter
01:07 PM XXCoder: modern drills is one of amazing invention from space program
01:07 PM Rab: I understand that it can't even support its own weight, but of course it doesn't have to.
01:07 PM XXCoder: it was answer to "how do they drill without being spinny"
01:07 PM rigid: XXCoder: indeed
01:08 PM rigid: Rab: i wonder how precise it would be when attaching a millbit :)
01:08 PM rigid: chaff in zero-g would go *wheeee*
01:12 PM Rab: Even terrestrial arms aren't great. More PM: https://www.practicalmachinist.com/forum/threads/robot-accuracy.421801/
01:17 PM rigid: "found by trial and error" sounds suspicious
01:17 PM rigid: although tbf, modern machine learning methods isn't much of a difference :)
01:35 PM rdtsc_away is now known as rdtsc
02:10 PM rdtsc: JT, any chance FlexGUI will have an arm64 build for us Rpi users?
02:15 PM rigid: rdtsc: isn't it pure python? should already run on rpi
02:16 PM JT-Shop: rdtsc, you have to talk to Tom_L about that :)
02:17 PM JT-Shop: no, it's not pure python it uses PyQt6 so if those imports are on the rpi it might run
02:17 PM rigid: it _will_ run
02:17 PM rigid: no such thing as "builds" in python
02:18 PM JT-Shop: it will run if all the dependencies are met
02:18 PM JT-Shop: just like mesact won't run on some flavors of rpi due to dependencies
02:18 PM rigid: JT-Shop: you might want to provide a setup.py/requirements.txt so one can easily install it with pip
02:19 PM JT-Shop: unfortunately I hate pip and pip3
02:19 PM * JT-Shop goes back to taking apart the experiment
02:19 PM rigid: well, it's a python thing.
02:20 PM rigid: but i can relate. I love linuxcnc but I hate so many parts of it with a passion.
02:21 PM rigid: ...it's possible to cope when seeing it more as an idea than an actual piece of software.
02:23 PM JT-Shop: I wish emc was just a stand alone software without all the gui dependencies
02:24 PM JT-Shop: and it gets more and more bloated everyday...
02:36 PM lcnc-relay: <travis_farmer> i discovered a flaw in my backup IRC logger... when my internet drops out, so does logging (go figure...)
02:36 PM lcnc-relay: oh well, at least it kindly reconnects itself 🙂
02:42 PM Tom_L: JT-Shop, will flex work on an rpi4?
02:42 PM Tom_L: all the libs etc available?
02:44 PM Tom_L: is designer available for the rpi?
02:44 PM rdtsc: It is, built a test image. Working on converting .ini and .hal
02:44 PM Tom_L: i can make a pi deb if all the dependencies are there
02:45 PM rdtsc: Not sure about the dependencies... could try it anyways
02:46 PM Tom_L: if you care to check, you may get to that quicker than me
02:47 PM rdtsc: sure thing
02:49 PM Tom_L: i can set up a test build if you wanna test one. my rpi is in a box atm
02:49 PM Tom_L: i doubt you're gonna get one for 32bit
02:49 PM Tom_L: more than likely it will be for bookworm 64 bit
02:52 PM Tom_L: JT-Shop, what is the openglwidget about?
02:55 PM Tom_L: rdtsc, care to test a deb?
02:55 PM rdtsc: With the release of the bookworm iso and 2.9.x, I think everyone (whom is able) is going that route.
02:55 PM rdtsc: sure
02:55 PM Tom_L: http://tom-itx.no-ip.biz:81/~webpage/cnc/JT-SHOP/flexgui/
02:55 PM Tom_L: working on a 32bit if possible
02:56 PM Tom_L: the armhf i just posted is 32bit
02:56 PM Tom_L: same folder
02:56 PM Tom_L: i can't test it atm until i dig out the rpi
02:57 PM Tom_L: but you'll need designer etc for the rpi as well and i dunno if it's available or not
02:57 PM Tom_L: i suppose you could do the ui on amd then copy it over
02:58 PM Tom_L: that deb has the very latest changes from jt
02:58 PM Tom_L: and if it works, i'll start pushing them to his repo
02:59 PM JT-Cave: https://paste.debian.net/1315310/
02:59 PM JT-Cave: if none of those imports fail then it should run
02:59 PM Tom_L: JT-Cave, the script i used for mesact works on this also
03:00 PM JT-Cave: you could use designer on any platform to build the ui file
03:00 PM rdtsc: Missing python3-pyqt6 and pyqt6-dev-tools, trying to add those now
03:00 PM Tom_L: right
03:00 PM Tom_L: JT-Cave, you may make a list of dependencies for the rpi and add them to your page
03:00 PM JT-Cave: rdtsc, open a terminal and try and import those libs from the paste
03:01 PM Tom_L: i'll try later but can't atm
03:01 PM JT-Cave: if it's a deb they contain the dependencies
03:01 PM JT-Cave: and if you use gdebi it installs them all for you
03:01 PM Tom_L: yeah
03:01 PM rdtsc: looks like an apt --fix-broken install got 'em
03:02 PM lcnc-relay: <travis_farmer> log2
03:04 PM rdtsc: it's asking about example configs not found, allowing
03:04 PM Tom_L: copy them over from examples
03:04 PM Tom_L: to lcnc config folder
03:04 PM Tom_L: the whole directory
03:04 PM Tom_L: or let the install do it
03:06 PM Tom_L: running an errand then maybe i can work on this
03:06 PM rdtsc: ok, fixing some .hal issues
03:06 PM Tom_L: keep track of any issues you find
03:06 PM lcnc-relay: <travis_farmer> i really need a linux laptop for dev...
03:11 PM rdtsc: It works! Came up fast also, granted it is largely blank.
03:12 PM rdtsc: My design is blank that is. Trying without my .ui
03:12 PM JT-Cave: that's the beauty of flex you can have as little or as much as you want in YOUR GUI
03:14 PM lcnc-relay: <travis_farmer> and thats why i want a dev linux laptop... so i can play with Flex without having to sit at my machine computer...
03:14 PM rdtsc: Omitting the GUI= line opens the "hello world" GUI shown in the docs fine.
03:14 PM JT-Cave: cool
03:15 PM rdtsc: cool indeed! I really like dragon, however it has things I don't need (like modbus) and this looks way simpler to reconfigure. L)
03:16 PM CaptHindsight: https://imgur.com/gallery/5csuS6g
03:17 PM rdtsc: cheese and rice, lol
03:19 PM Tom_L: so it works
03:19 PM rdtsc: Was just going to ping you: in case you missed it, it worked on the Rpi4 v1.5
03:19 PM Tom_L: JT-Cave, i may only push the 64bit version on this
03:19 PM Tom_L: unless someone can verify the 32bit armhf one
03:19 PM JT-Cave: ok
03:20 PM JT-Cave: did you see the last one from the forum
03:20 PM Tom_L: i guess you don't need the tools since you can build it on any platform
03:20 PM Tom_L: not today's if there was one
03:20 PM JT-Cave: https://forum.linuxcnc.org/41-guis/51580-flexible-gui?start=20#299125
03:22 PM rdtsc: That's really good... and fast too
03:22 PM lcnc-relay: <roguish> JT-Cave: who made that one ???? it's huge....
03:23 PM lcnc-relay: <roguish> are the graphics gremlin ??
03:24 PM Tom_L: wow that took some time
03:24 PM JT-Shop: I don't know what was used
03:26 PM Tom_L: i guess i can push both rpi versions, maybe someone can test one before i'm able to
03:27 PM Tom_L: gonna revise this mesact script..
03:27 PM JT-Shop: I can say that the 32 is untested
03:27 PM Tom_L: yeah
03:28 PM rigid: hm, what could be the reason that homing works fine, if the distance is large enough but when starting from too close to the limit switch, there's a limit switch error?
03:28 PM rigid: should I decrease cycle time?
03:28 PM Tom_L: how much do you back off the switch?
03:29 PM Tom_L: JT-Shop, i'll be testing this script... bear with me a bit
03:29 PM rigid: you mean [JOINT_x]HOME ?
03:29 PM rigid: ehrm HOME_OFFSET i guess
03:30 PM JT-Shop: Tom_L, no problem
03:30 PM Tom_L: rigid, yes home offset
03:31 PM JT-Shop: if the home/limit switch is not tripped homing should just work if you move off the switch enough after the slow move
03:32 PM rigid: HOME_OFFSET=-1.0 and HOME=0.0
03:32 PM rigid: also tried with HOME_OFFSET unset
03:33 PM lcnc-relay: <roguish> the diagrams in the docs are pretty good, and explain it all well
03:33 PM Tom_L: ok gonna test run this script. fingers crossed
03:34 PM JT-Shop: HOME = 0.0
03:34 PM JT-Shop: HOME_OFFSET = -0.050
03:34 PM JT-Shop: HOME_SEARCH_VEL = -0.25
03:34 PM JT-Shop: HOME_LATCH_VEL = -0.01
03:34 PM JT-Shop: HOME_FINAL_VEL = 0.1
03:34 PM JT-Shop: HOME_IGNORE_LIMITS = YES
03:34 PM JT-Shop: HOME_SEQUENCE = 2
03:34 PM JT-Shop: that's my BP mill
03:34 PM lcnc-relay: <travis_farmer> 🤞
03:34 PM lcnc-relay: <roguish> JT-Shop: qtdragon has to have a 'handler.py' file to go with it. does flex need something like that?
03:34 PM * JT-Shop tries to remember if he made the homing diagram or not
03:34 PM JT-Shop: no
03:35 PM lcnc-relay: <roguish> http://linuxcnc.org/docs/devel/html/config/ini-homing.html
03:35 PM JT-Shop: flexgui needs nothing more than a qmainwindow to run :)
03:35 PM Tom_L: didn't catch your last 2 edits... i'll push 2x to catch up
03:35 PM JT-Shop: ok
03:35 PM lcnc-relay: <roguish> JT-Shop: that's good.
03:36 PM lcnc-relay: <roguish> updates a lot easier, especially for us programming idiots
03:37 PM Tom_L: pr #5 up
03:37 PM Tom_L: so you guys can get rpi debs off jt's site now
03:37 PM JT-Shop: ok
03:37 PM JT-Shop: :)
03:37 PM rigid: o shit it's a race
03:37 PM rdtsc: Cool Tom, thanks. :)
03:38 PM Tom_L: JT-Shop, when you make a ver change put the new vers in the description if you don't mind
03:38 PM JT-Shop: the readme.md file?
03:38 PM Tom_L: since these will change often
03:38 PM rigid: i change the cycle time to 50% and now I get "cannot unhome while homing" (i'm unhoming before homing)
03:39 PM Tom_L: i use a default description on the script but if i enter one on the command line it sends you that one instead
03:39 PM rigid: that means state != RCS_EXEC and c.wait_complete() returning although still executing :-(
03:39 PM JT-Shop: yay the 7i96S will be back in stock in a few days
03:39 PM Tom_L: and knowing there's a version change i can do that
03:39 PM rigid: ...deja vu
03:40 PM JT-Shop: c.wait_complete() has a 5 second timeout if the timeout is not specified
03:41 PM rigid: i know
03:41 PM JT-Shop: ok
03:41 PM lcnc-relay: <roguish> that is exactly the kind of testing that needs to be done
03:41 PM rigid: i'm afraid I can't think of anything else than a racecon. Sometimes it works when timing is changed
03:43 PM rigid: can AI fix race conditions already?
03:43 PM rigid: :)
03:46 PM JT-Shop: so now she says she is not at fault and is getting an estimate to fix her car
03:46 PM Tom_L: hah she was _too_ nice
03:47 PM Tom_L: in a parking lot it's no fault
03:47 PM Tom_L: fwiw
03:47 PM Tom_L: you fix yours she fixes hers
03:47 PM Tom_L: unless you can prove she said she was at fault
03:47 PM JT-Shop: no proof of anything
03:48 PM Tom_L: what parking lot?
03:48 PM Tom_L: security cameras are everywhere
03:48 PM JT-Shop: key drugs
03:48 PM Tom_L: your ins may fight them but it's hardly worth you doing so
03:49 PM JT-Shop: we both have state farm
03:49 PM Tom_L: as do i
03:49 PM Tom_L: it will likely fall under 'no fault'
03:50 PM rigid: yay, time.sleep(1) after each command works like a charm
03:50 PM Tom_L: we had that happen on her civic when it was first new. the guy admitted fault, pulled out his wallet and gave her like $500. the dealer popped the ding out for $65
03:51 PM rigid: because f**k concurrency :)
03:51 PM lcnc-relay: <travis_farmer> sounds like she may be a "judge judy" trailer-park lawyer...
03:51 PM Tom_L: he obvously didn't want a run in with the law :)
03:55 PM lcnc-relay: <travis_farmer> <-- hates judge judy trailer-park lawyers... had one take my father and i for over $6K
04:03 PM Tom_L: python3-pyqt6 is not satisfiable on armhf
04:04 PM Tom_L: so that's a no go
04:04 PM Tom_L: so just arm64
04:04 PM rdtsc: ouch, well that gives reason to upgrade lol
04:04 PM Tom_L: just tested on buster
04:05 PM Tom_L: scratch that... bullseye
04:05 PM Tom_L: but a 32bit version
04:05 PM Tom_L: but like you said.. the iso is bookworm so why look back?
04:07 PM rdtsc: someone out there is going to have an older pi and want to use FlexGUI... they just will not be able to, incompatible
04:07 PM Tom_L: not unless they can find that package
04:07 PM rdtsc: or build one
04:07 PM Tom_L: i'm not going to chase it down
04:11 PM rdtsc is now known as rdtsc_away
04:14 PM Tom_L: seemed to install ok here on the arm64 sd
04:14 PM JT-Shop: cool
04:15 PM Tom_L: i'll just build for the arm64 then unless someone comes up with a reason to add armhf
04:16 PM Tom_L: i'd discard the armhf deb for now
04:16 PM JT-Shop: ok
04:19 PM Tom_L: gonna do one more test build without armhf
04:20 PM Tom_L: can you reject the last pull? or how can i discard it?
04:20 PM JT-Shop: I closed it
04:25 PM Tom_L: ok #6 should be right
04:42 PM lcnc-relay: <roguish> JT-Shop: are you going to give Tom_L a co-authorship on flex gui ????
04:42 PM Tom_L: i didn't write anything i just break it
04:43 PM Tom_L: if i did, it would be broken in all sorts of other ways
04:43 PM JT-Shop: :)
04:44 PM Tom_L: building the debs is a piece of cake
04:44 PM Connor: I need to know how to host some deb packages so that as few servers I have can pull them down and update using apt get.
04:44 PM JT-Shop: down to 5 hens
04:45 PM Tom_L: :/
04:45 PM JT-Shop: https://youtu.be/pH37Dep0cvU?list=PLB00JHoTw1TeX82Qw8hoFLRJI89Us_jMw&t=475
05:01 PM JT-Shop: Victoria was quite pretty and looked like the queen with her colors
05:02 PM * JT-Shop should go work on the mail box
05:16 PM Tom_L: gonna mod the dryer vent a little so it's routed a bit better
05:16 PM Tom_L: or maybe a tomorrow project
05:16 PM JT-Shop: new dryer due soon?
05:16 PM Tom_L: one more week supposedly
05:16 PM Tom_L: the old one works ok
05:17 PM Tom_L: i haven't bothered them, i figure they'll call
05:17 PM JT-Shop: a few years ago the fridge crapped out just before we left for Alaska so we ordered a new LG and it was here by the time we got back
05:18 PM JT-Shop: the LG is so much better than the sears one it replaced
05:18 PM Tom_L: last one we got was a new home display
05:18 PM Tom_L: just happened to be what we needed
05:18 PM JT-Shop: on that note we still have the fridge we bought a zillion years ago at sears in the basement
05:18 PM Tom_L: just not in the box
05:19 PM Tom_L: i had 2 go out the same week
05:19 PM JT-Shop: I'd have to look at the wedding glasses to figure out how old it is and still works great
05:19 PM Tom_L: they were the same brand (i forget who)
05:19 PM Tom_L: hah
05:19 PM Tom_L: hard to find quality anymore
05:19 PM JT-Shop: 35 years maybe
05:19 PM Tom_L: that's why i went commercial this time
05:20 PM Tom_L: 5 yr part/lablr guarantee with a 25yr engineered life expectancy
05:20 PM Tom_L: labor
05:20 PM JT-Shop: so I texted the lady that hit me that your door was in motion when you hit my car and I see you've changed your tune since Wednesday
05:21 PM Tom_L: heh
05:21 PM Tom_L: she had time to think about it but she knew she was wrong in the first place
05:21 PM JT-Shop: yup
05:21 PM JT-Shop: just trying to weasel out of paying
05:22 PM Tom_L: the one that dinged us was probably trying to avoid jail time
05:23 PM Tom_L: his other half did it and tried to weasel her way out but he knew she did it
05:24 PM Tom_L: hope it works out ok
05:25 PM JT-Shop: she texted me back something but I didn't look at it
05:26 PM JT-Shop: Leo should launch Tally Ho tomorrow
05:26 PM Tom_L: cool
05:26 PM Tom_L: finally ready
05:28 PM JT-Shop: prob already launched but the video should come out tomorrow
05:29 PM Tom_L: yeah
05:48 PM Unterhausen: someone brought an explosive substance to hazardous waste collection day
05:49 PM XXCoder: ow
05:56 PM rdtsc: hmm, flour can be explosive if atomized
05:56 PM JT-Shop: yup, a grain elevator in louisiana blew up due to dust
05:56 PM JT-Shop: iirc it was in Destrahan
05:57 PM rdtsc: brother in law worked at a cereal plant; half the roof was blown off decades ago
05:58 PM JT-Shop: there was a small school next door and they had to build a new one a safe distance away
05:58 PM rdtsc: crazy. the stuff that almost never happens
06:00 PM JT-Shop: https://scphistory.org/bunge-explosion/
06:04 PM bjorkintosh: https://www.youtube.com/@USCSB
06:04 PM rdtsc: dang, must've been chock-full of grain too
06:31 PM Tom_L: google the garvey grain elevator for an extensive elevator explosion
06:32 PM Tom_L: blew off 3-4 end cylinders from the largest elevator ww
06:32 PM JT-Cave: the bunge explosion blew up the whole thing
06:32 PM Tom_L: called DeBruce now
06:33 PM Tom_L: https://www.ksn.com/news/local/25-years-ago-debruce-grain-elevator-explosion/
06:33 PM JT-Cave: looks like we are in for some rain
06:33 PM JT-Cave: say goodnight Gracie
06:33 PM Tom_L: i think storms here too but i didn't look
06:44 PM rdtsc is now known as rdtsc_away
07:28 PM rdtsc_away is now known as rdtsc
07:39 PM rdtsc: JT, is the object name for an E-Stop button just EStop? It doesn't allow me to enter a hyphen in the objectName box.
07:56 PM Tom_L: E-Stop estop_pb
07:56 PM Tom_L: https://www.gnipsel.com/linuxcnc/flexgui/controls.html#push-buttons
07:56 PM Tom_L: underscore
08:02 PM rdtsc: aaaah forgive me, long day
08:07 PM Tom_L: you can usually find them in startup.py iirc
08:09 PM rdtsc: any idea where the INPUT=TOUCH gets its .css from? It'd be cool if the same style was shown in qtdesigner
08:10 PM Tom_L: examples
08:10 PM Tom_L: there's keyboard.qss and touch.qss
08:11 PM Tom_L: i don't remember if when you install the examples it gets copied to linuxcnc/configs or not
08:12 PM rdtsc: it does, just found it. man i'm slow today
08:12 PM Tom_L: i forget what triggers installing examples too :)
08:12 PM Tom_L: i've tested so much but only installed those once or twice
08:13 PM rdtsc: it did ask on first run if examples should be copied - worked great
08:18 PM rdtsc: Sorry been up since 3:45 and recovering from a surgery
08:22 PM rdtsc: Aaah, there we go, paste touch.qss into MainWindow stylesheet.
08:22 PM Tom_L: seems several have taken to flexgui and it's not even officially released
08:24 PM rdtsc: I really like Persei8's Dragon, but there's things on it I'll never use. Then that other gentleman created the FlexDragon (in like 10 minutes) so I figured, how hard could it be? lol
08:26 PM rdtsc: Besides, good way to learn how everything is interconnected. Estop and Power already working physically, learning lots.
08:27 PM Tom_L: pull up the xyz example or mine and look them over
08:27 PM Tom_L: mine is mostly for my testing
08:33 PM rdtsc: Nice and compact! This touchscreen will do 1280x720 or 1920x1080; hoping to get by with the former to save a few cycles.
08:36 PM Tom_L: mine uses just the keyboard otherwise things wouldn't fit
08:36 PM Tom_L: like i said, it's purely for testing
08:40 PM rdtsc: Nice. Now was this a spin-off of "jet"? I saw that in JT's github not too long ago.
08:40 PM Tom_L: yes
08:41 PM Tom_L: the source was pretty much completely rewritten
08:41 PM Tom_L: lots of widget name changes etc
08:41 PM rdtsc: Well flex indeed, this is very flexible and approachable even for the non-UX professionals :)
08:50 PM Tom_L: rdtsc, did you try the deb i built for rpi4?
08:50 PM rdtsc: the bookworm?
08:50 PM Tom_L: no for flex
08:51 PM rdtsc: yes that's what I installed. It was missing some dependencies, but was fixable with apt --fix-broken install
08:51 PM Tom_L: ok
08:53 PM rdtsc: on first run, I think it created the linuxcnc/configs/flex_examples folder
08:53 PM Tom_L: yeah probably
08:53 PM Tom_L: iirc it asks you
08:54 PM rdtsc: examples are very helpful, thank you.
09:07 PM Tom_L: managed to screw up my install somehow
09:08 PM rdtsc: oh, trying it on your rpi?
09:09 PM Tom_L: no i'm not sure what happened
09:09 PM Tom_L: the main test pc. i'm screwing something up all the time
09:10 PM rdtsc: OS / QT mismatch?
09:10 PM Tom_L: the cross builds could have screwed something up
09:10 PM rdtsc: I heard JT tried QT6 and came back to 5
09:11 PM Tom_L: yeah we're running the same stuff afik
09:11 PM rdtsc: oh... did you edit your fstab and set bugs=off? :)
09:12 PM Tom_L: something with the pyqt install
09:24 PM rdtsc: btw that was a joke of course, there is no bugs=off (sometimes feels as though that should exist though.)
09:25 PM XXCoder: would be fanastic
09:26 PM lcnc-relay: <xxcodery> https://jauriarts.org/_matrix/media/v3/download/jauriarts.org/rSDxhSbdzIHwdVGGrbzLxKxS/0e108388f8b03dcf01bb729e4dbc297c.png
09:26 PM lcnc-relay: <xxcodery> reminded me of that old joke
09:40 PM rdtsc: gosh, been ages since that. sodding paperclip lol
09:49 PM rdtsc is now known as rdtsc_away
10:45 PM -!- #linuxcnc mode set to +v by ChanServ
11:32 PM Tom_L: what package had pyqt5 designer
11:57 PM Tom_L: found it