Estlcam in Bottles for Linux

Good and correct AI info.

Estlcam uses the “System.IO.Ports.Serialport” namespace of the .NET 4.8 Framework for serial communication and handles the programming itself (which is very easy and straightforward - absolutely no black magic involved).

It surprises me that this part seems to be the roadblock.
The whole application relies on .NET 4.8 and such a basic and old school core functionality like serial port communication feels strange to be missing. If Estlcam crashes the functions may really just not be implemented. If it were a permissions issue I’d expect “Port.Open()” to just fail and return which Estlcam would catch a few moments later by verifying “Port.IsOpen” and seeing that it is still closed.

Also no Win32 or other external function calls around this part of the code - it is all within the usual .NET Framework functionality. The only potential issue I’d have imagined would be after sucessufully connecting to the programmed controller where a “kernel32.SetThreadExecutionState” call tries to elevate Estlcams process priority. Something a strict system like Linux may refuse without admin privileges - but this function is not called during programming and it also wouldn’t be too much of an issue if the priority elevation is just refused and the function returns otherwise normally - it would only add some lag if the computer is doing a lot of other things at the same time.

If someone is able to pinpoint the exact function where everything hangs up I might be able to find a workaround.

3 Likes

Thank you, Christian. This all sounds pretty much like Greek to me… hopefully some more knowledgeable folks will speak up and offer ideas. And someone who uses Estlcam regularly will also hopefully try this and verify that all the CAM functionality is as good as hoped; i.e. I haven’t used Estlcam more than a couple of times… and years ago.

Thanks, again!

– David

2 Likes

Is this with an arduino that has already been programmed outside of bottles? If only the programming is the problem, then that might be useful info for Christian.

It’s really hard to guess. Bottles is remapping all of those calls to other functionality. Most of it has been mapped correctly, but obviously not everything.

Would Estlcam handle it if that function threw an exception instead of just quietly failing? Is there any way for David to get a log or trace of Estlcam while it’s crashing?

It’s just an old original UNO that I pulled out of the junkbox. It’s been programmed numerous times but not through Bottles until these tests. It had “blink” already on it when I picked it to play with. Please ignore the dog hair…

3 Likes

I’m also trying to get ESTLCAM working under bottles, unfortunately without a dog on my lap.

I managed to find the following: com35 is linked to /dev/ttyUSB0, that’s where my estlcam controller is connected to. When I configure the software to use this port estlcam crashes with the following message:

Exception: the method or operation is not implemented
Source: estlcam12

I get the same error message when I choose another comport (that is linked to another device IE com1 is linked to /dev/ttyS0)

You can see what port is linked to which device in /home/USERNAME/.var/app/com.usebottles.bottles/data/bottles/bottles/Estlcam/dosdevices/

Where USERNAME = your username

2 Likes

I did the same yesterday. I figured out that the crash is related to mono. I got a wine prefix working with dotnet 4 & 4.8 instead of mono.
When setting up a comport to /dev/ttyUSB0 estlcam won’t crash anymore when I try to flash the klemmadapter controller.

I tried to somehow debug what is happening, but did not find anything useful yet.

@christian-knuell is there a way to get some verbose output from estlcam to see what is happening there?

Also I tried to recreate that with bottles. When I set up dotnet instead of mono, the program wouldn’t start anymore. I have no clue why it works with “plain” wine and not with bottles.

Another observation: in “plain wine” the font in estlcam is the correct one, in bottles it is replaced with an alternative. Both environments have the same fonts installed.

2 Likes

Running EstlCAM on MacOS via WINE gives me a problem where the text/font in the tooltips is enormous and makes a lot of the tooltips unreadable. It’s not a Mac resolution problem because the tooltips are just fine running it in Parallels instead of WINE.

Just adding it to the convo as a data point in case it is helpful

This would be a good discussion to split out to its own topic
@vicious1 @jeffeb3

1 Like

I put Zorin OS 18 on my Windows 11 machine, and installed Estlcam 12 using Wine.

I found a problem that when trying to save a file, the menu disappears each time, and couldn’t make a save.

I found that holding the shift key down while making the save stops the menu crashing. ???

3 Likes

That shift key hack is next level. Who would have thought to try that? Thanks for sharing!

3 Likes

I am running windows 11 on my cnc machine just for ESTLcam and I really would like to switch too Linux too, and I got into the same issues as people stating here with the COM ports.

Estlcam 11 crashes and 12 gets in a loop but finds nothing.

Did anyone got this too work?

I installed Zorin OS 18 (Linux) and am running Estlcam 12 with almost no problems.

The one problem that I had was that when trying to open a file the file menu in Estlcam would disappear. I found that if you hold the shift key down while selecting the file menu, it works fine.

Everything works the same as in Windows 11.

1 Like

An update on using EstlCAM via WINE on MacOS:

  • I use it on two different Macs and the behavior of EstlCAM via WINE is identical: a 2015 MBP (MacOS 12.7.6) and a 2023 MBA (whatever the latest MacOS is)

I have two main issues:

  1. “Tool tip text”: Text from tool tips get messed up, they are too large and the spaces between letters and words get mashed together, or the body of the tool tip is cut off. Conversely, some tool tips are just fine, so it’s really odd/inconsistent behavior. Screenshot example further down.
  2. “Over-zooming”: Zooming in and out via the trackpad on the laptops is wildly inconsistent. For example a small two finger scroll could make the zoom level just “nudge” like you’d want it to, and then you do your two finger scroll just a little bit further, and the zoom takes the hell off (in or out, same over-zooming behavior). I have a couple work arounds for this (see below), but it does reach a point where if you zoom too much, the application will lock up and you have to force quit :(. This only happens with the touchpad, using a mouse and scroll wheel behaves normally.

Solutions/Work arounds:

RE: “Tool tip text”, I do not have any work arounds for this, but it’s more of an annoyance than a game-breaking bug. Screenshot example below, the diagram of the tool and the remaining text is cut off:

RE: “Over-zooming”, I discovered last night (hence this post), that double clicking in the work area will zoom back to the default level. Alternatively, if you create at least one tool path, you can click the “Preview” button and when you exit out of the preview, you’ll be brought back to the default zoom level. These do not save you if you zoom in too much and cause the program to lock up, however. Again if you use a mouse and scroll wheel, you don’t have this problem. Since it’s a trackpad gesture issue, I’m thinking there has to be some setting either in system settings or a config in WINE to make it behave better? Haven’t done any research into this though, so if anyone has ideas, please share :slight_smile:

Hmm I have EstlCAM working in Linux Mint under Bottles. But not as controller just CAM. I tried to look through the threads but not sure exactly what the issues are. IIRC the biggest problem I had was the menus needing super quick clicks or they go away. Popups seem fine for me.
For the .NET stuff, you can make sure the right ones are included in the Bottles setup. I can try to remember…

Bottles from flathub. com.usebottles.bottles

groups: doc adm tty dialout cdrom sudo dip plugdev users lpadmin sambashare libvirt libvirt-dnsmasq kvm libvirt-qemu

If I remember correctly I needed the dialout. and ??

Filesharing

flatpak override --user --filesystem="/home/username/Documents/CNC" com.usebottles.bottles

IIRC I had to install the PLatunum one that exists and look at the settings of what is included the first time but I dont remember doing that the last time.

Attaching some screenshots of settings…

IIRC I chose “app” not Game". Yup saya “application”.

Mono font is required but that seems to be included now.

Dependencies are the most likely issues… ill make follow up posts since I can only add 5@time

I do remember setting up COM ports being a pain. If I remember correctly it was setting the baud rate and com port took a while to figure out. No that was for Repetier. My notes suggest the dialout fix

DONT FORGET -a!!!

Sudo usermod -a -G dialout doc
Sudo usermod -a -G tty doc
Reboot

Probably not all that helpful. But originally auto and the baud rate needed tweaking.

Sorry not sure any of that helps.

1 Like


might be overlap. couldn’t remember how many and opted for more

the bottles config yml exported

Arch: win64
CompatData: ''
Creation_Date: '2024-10-20 17:21:57.809110'
Custom_Path: false
DLL_Overrides: {}
DXVK: dxvk-2.4.1
Environment: Application
Environment_Variables: {}
External_Programs: {}
Inherited_Environment_Variables: []
Installed_Dependencies:
- arial32
- times32
- courie32
- mono
- gecko
Language: sys
LatencyFleX: latencyflex-v0.1.1
Limit_System_Environment: false
NVAPI: dxvk-nvapi-v0.7.1
Name: Estlcam 12.104
Parameters:
    custom_dpi: 96
    decorated: true
    discrete_gpu: false
    dxvk: true
    dxvk_nvapi: false
    fixme_logs: false
    fsr: false
    fsr_quality_mode: none
    fsr_sharpening_strength: 2
    fullscreen_capture: false
    gamemode: false
    gamescope: false
    gamescope_borderless: false
    gamescope_fps: 0
    gamescope_fps_no_focus: 0
    gamescope_fullscreen: true
    gamescope_game_height: 0
    gamescope_game_width: 0
    gamescope_scaling: false
    gamescope_window_height: 0
    gamescope_window_width: 0
    latencyflex: false
    mangohud: false
    mangohud_display_on_game_start: true
    mouse_warp: true
    obsvkc: false
    pulseaudio_latency: false
    renderer: gl
    sandbox: false
    sync: wine
    take_focus: false
    use_be_runtime: true
    use_eac_runtime: true
    use_runtime: false
    use_steam_runtime: false
    versioning_automatic: false
    versioning_compression: false
    versioning_exclusion_patterns: false
    virtual_desktop: false
    virtual_desktop_res: 1280x720
    vkbasalt: false
    vkd3d: true
    vmtouch: false
    vmtouch_cache_cwd: false
    wayland: false
    winebridge: false
Path: Estlcam-12.104
Registry_Rules: []
Runner: soda-experimental_8.0
RunnerPath: ''
Sandbox:
    share_net: false
    share_sound: false
State: 0
Uninstallers: {}
Update_Date: '2025-12-21 20:16:20.696816'
VKD3D: vkd3d-proton-2.13
Versioning: false
Versioning_Exclusion_Patterns: []
Windows: win10
Winebridge: false
WorkingDir: ''
data: {}
run_in_terminal: false
session_arguments: ''

I do not even see a dependency to add for 4.8 but there is a 4.7 available under dependencies. Edit Oh it’s there I just missed it “dotnet48”

1 Like

I’m trying to get Estlcam to launch in Bottles and it simply does nothing - I create a new bottle, go to Programs → Install Programs, locate Estlcam, click on the Save icon, agree to the prompt to start installation, then I go to the bottle and click Play next to Estlcam. It goes to a stop button then instantly back to a Play button.

Am I missing a step or something like that?

1 Like

Try this, it worked for me: GitHub - cryinkfly/Estlcam-for-Linux: This is a project, where I give you a way to use Estcalm on Linux!

1 Like

Fantastic! Have you actually used it to install the Estlcam firmware or direct control your machine over the serial communications port?

This was the hangup from post #20 that Christian confirmed and explained in post #21

It’ll be fantastic if this is now fixed.

1 Like

I do not control it from this machine but a Windows 10 machine. I only do my toolpaths etc on my main computer with Linux.

The instructions give you advise on how to enable the communication though. Might work, might not work. :stuck_out_tongue:

1 Like