[-] [email protected] 94 points 4 months ago

Firstly: of course he knew it was illegal.

Secondly: ignorance of the law does not give you immunity from breaking it

[-] [email protected] 49 points 4 months ago

Wind-proof router, here you go

[-] [email protected] 81 points 4 months ago

"Several cases?" Lol

Virtually every bill that passes in Congress contains riders and typically only passes because of those riders.

[-] [email protected] 40 points 5 months ago

This is not news unless he actually took ownership of that Tahoe for $1 in the end.

[-] [email protected] 71 points 5 months ago

But gaming on Linux is cancer.

Your information is outdated

[-] [email protected] 96 points 6 months ago

Why have a service fee at all then?

Just raise the prices and use the extra income to pay the employees better if that's really your intention.

People won't get upset about the tip on top of it if you don't already have a "service charge" sectioned off in the receipt.

32
submitted 6 months ago by [email protected] to c/[email protected]

Here's a tough one for you:

An alternative to AutoDesk Fusion360 for 3D print modeling.

Ideally with native Linux support but I'm more concerned with getting out from under AutoDesk's thumb than I am with using wine.

Blender seems like the obvious choice, but it's not really built for 3d printing.

It's looking like FreeCAD may be about as good as it gets unless someone here has some other suggestions.

53
submitted 7 months ago by [email protected] to c/[email protected]

cross-posted from: https://lemmy.world/post/6872403

Spoolman Logo

What if your Klipper printer could keep track of which spool is loaded and how much filament is remaining?

  • Do you wish your printer could keep track of the filament remaining on each spool automatically for you?
  • Do you want it to automatically switch to the correct spool when you load one?
  • Do you wish your printer would warn you when you have PLA loaded and try to print an ABS gcode?

Does that sound like something you need? Read on below:

Spoolman is the project for you!

It was created by Donkie (not myself) and it has official support in moonraker. Additionally the Fluidd, Mainsail and KlipperScreen UIs also integrate its functionality. Octoprint is not supported at the time of writing. Even without a compatible UI spools can be selected using macros or calls to the moonraker API.

Installation is fairly straight-forward, but some Klipper users may not be familiar with docker so it can seem rather intimidating.

I've written out a short guide to help you get started:

Setup

I don't think the spoolman software is very resource-intensive, but I personally installed it on a separate system from my pi.
You will likely be fine to install it on the pi in most cases though.

To begin, you need to install docker/docker-compose:

sudo apt update
sudo apt -y install docker-compose

Then create a directory for spoolman:

mkdir ~/spoolman
cd ~/spoolman

Create a docker-compose config:

nano ~/spoolman/docker-compose.yml

docker-compose.yml:

version: '3.3'
services:
  spoolman:
    image: ghcr.io/donkie/spoolman:latest
    restart: unless-stopped
    volumes:
      - ./data:/home/ubuntu/.local/share/spoolman
    ports:
      - "7912:8000"
    environment:
      - TZ=America/New_York # Optional, defaults to UTC

You may want to change the timezone. A list is available here Then run:

sudo docker-compose up -d

You should now be able to access the interface at http://ipaddress:7912 (replace ipaddress with your pi/host's ip address)

Create your first Vendor, Filament, and then Spool in the UI there. When I tried to configure moonraker in the next step it failed without an initial spool existing in the database, so I wouldn't skip this.

Configuration

Now we need to configure moonraker to use spoolman.

Pop open your moonraker.conf file and add the following:

# enables spool management
[spoolman]
server: http://ipaddress:7912
#   URL to the Spoolman instance. This parameter must be provided.
sync_rate: 5
#   The interval, in seconds, between sync requests with the
#   Spoolman server.  The default is 5.
``` Once again, we need to replace `ipaddress` with the ip address of the host system. If it is the same as the pi (the one running moonraker) you can also simply use `localhost` instead

Restart moonraker and reload Fluidd/mainsail/etc and you should now see a `spoolman` section on the dashboard.
You can also verify in your `moonraker.log` file, look for a line like this:
```2023-08-08 10:53:43,664 [server.py:load_component()] - Component (spoolman) loaded```

Remember, even without using a compatible UI, Klipper/moonraker will still track filament use against the last spool selected.

We can also add commands that allow us to select the spool regardless of the UI:

**printer.cfg**:
```ini
[gcode_macro SET_ACTIVE_SPOOL]
gcode:
  {% if params.ID %}
    {% set id = params.ID|int %}
    {action_call_remote_method(
       "spoolman_set_active_spool",
       spool_id=id
    )}
  {% else %}
    {action_respond_info("Parameter 'ID' is required")}
  {% endif %}

[gcode_macro CLEAR_ACTIVE_SPOOL]
gcode:
  {action_call_remote_method(
    "spoolman_set_active_spool",
    spool_id=None
  )}

These commands can be used like SET_ACTIVE_SPOOL ID=5 and CLEAR_ACTIVE_SPOOL to select (or clear) the spool. Spools are selected by spool-id, which you can see on the spoolman UI where you create new spools. These commands can even be used in your "Custom Filament Gcode" in the slicer to allow filament profiles to select spools automatically.

Mainsail/Fluidd allow for integration with the klipper/crowsnest webcam to scan qrcodes from spools and automatically select the proper spool at the start of a print/etc. QRcodes can be printed from the spoolman web UI.

If you are not using mainsail/fluidd or you want it to function without the UI, I wrote a small script that will scan qrcodes from klipper cameras and command spoolman to select the spool it identifies.

This can be triggered from a macro which allows you to put it in your start gcode.

The code and instructions are below:

Scanning Spool QRcodes

This functionality requires you to install the zbar-tools package for scanning codes and the gcode_shell_command Klipper extension to allow klipper to trigger shell scripts.

# Install zbar-tools for reading qrcodes
sudo apt install zbar-tools
# Install gcode_shell_command to run scripts from klipper macros
cd /home/pi/klipper/klippy/extras/
wget https://raw.githubusercontent.com/th33xitus/kiauh/master/resources/gcode_shell_command.py

Then we add some config to our klipper config file:

printer.cfg

[gcode_shell_command qrcode_qrscanner]
## NOTE: Change the path below if your klipper config is not in the default path ##
command: sh /home/pi/printer_data/config/qrcodespoolman.sh
verbose: True
timeout: 2.

[gcode_macro QRCode_Scan]
gcode:
    RUN_SHELL_COMMAND CMD=qrcode_qrscanner

And create a shell script:

qrcodespoolman.sh (place in your config folder next to printer.cfg)

#!/bin/sh

########################################## WARNING: ##############################################
### This script assumes you are using a crowsnest webcam on the same host and the first camera ###
###      Adjust the paths and addresses below as needed to work with your configuration        ###
##################################################################################################

## Capture a snapshot from the camera and store it in a jpg file
wget http://localhost/webcam/?action=snapshot -O /home/pi/printer_data/gcodes/qrcode.jpg

## Read any QRcodes from the image and strip just the spool-id from the data in the code
SPOOLID=$(zbarimg -S*.enable /home/pi/printer_data/gcodes/qrcode.jpg | sed 's/[^0-9]*\([0-9]\+\).*/\1/')

## Return the spool-id in the console (this is mostly for debugging purposes)
echo $SPOOLID

## Make an API call to spoolman selecting the spool that matches the spool-id
curl -X POST -H "Content-Type: application/json" -d "{\"spool_id\": \"$SPOOLID\"}" http://localhost:7125/server/spoolman/spool_id

Please read through the comments in those snippets, particularly if your klipper config is not located in /home/pi/printer_data/config or your camera is not connected to the same machine. You may need to make adjustments to fit your machine.

The paths and addresses used in the example should work for anyone using a pi with a single printer and the first/only camera configured in crowsnest.

If all goes well you should now be able to trigger this action with the following command:

QRCODE_SCAN

You can place that in your start gcode to have it triggered at the start of every print.

The command does the following:

  • Triggers the qrcode script, which does the rest:
  • Asks moonraker for a snapshot from the webcam
  • Locates and scans any qrcode in the image
  • Strips out any data in the qrcode except for the spool id
  • Tells moonraker to tell spoolman to select that spool id

Updating Spoolman

To update your spoolman instance, assuming you have installed in ~/spoolman, you can use the following command:

cd ~/spoolman;sudo docker-compose stop;sudo docker-compose pull;sudo docker-compose up -d

NOTE: Avoid using docker-compose down as it will wipe out the storage volumes, likely taking your spool database with it.

You also may want to consider using watchtower to automatically keep docker containers updated, but that is outside the scope of this guide.

Bonus screenshots

Spoolman UI - Spools A screenshot of the UI from spoolman, show a list of spools configured in the database

Fluidd UI - Spool Widget A screenshot of a widget from the Fluidd dashboard showing the currently selected spool in an image and some stats about it as well as a button to change spools

Fluidd UI - Spool Selection Dialog

A screenshot of the spool selection dialog which shows a list of spools that can be selected from to choose the one used for filament tracking. Details of each spool are shown including an image with the color, the storage location, and the last used date-time

Conclusion

I hope this little guide helps anyone interested in trying out spoolman, its a great tool that fulfills a function in Klipper that I've been looking for for a while, and it does so very well!

I just want to reiterate, this is not my project. I am just a Klipper fan who wanted to get the word out on what I think is a really great project that a lot of Klipper users may like.

That said, I hope my guide can help those users give it a try!

And if you have any trouble, or just questions/concerns, leave a comment below and I will do my best to help!

3
submitted 7 months ago* (last edited 7 months ago) by [email protected] to c/[email protected]

Spoolman Logo

What if your Klipper printer could keep track of which spool is loaded and how much filament is remaining?

  • Do you wish your printer could keep track of the filament remaining on each spool automatically for you?
  • Do you want it to automatically switch to the correct spool when you load one?
  • Do you wish your printer would warn you when you have PLA loaded and try to print an ABS gcode?

Does that sound like something you need? Read on below:

Spoolman is the project for you!

It was created by Donkie (not myself) and it has official support in moonraker. Additionally the Fluidd, Mainsail and KlipperScreen UIs also integrate its functionality. Octoprint is not supported at the time of writing. Even without a compatible UI spools can be selected using macros or calls to the moonraker API.

Installation is fairly straight-forward, but some Klipper users may not be familiar with docker so it can seem rather intimidating.

I've written out a short guide to help you get started:

Setup

I don't think the spoolman software is very resource-intensive, but I personally installed it on a separate system from my pi.
You will likely be fine to install it on the pi in most cases though.

To begin, you need to install docker/docker-compose:

sudo apt update
sudo apt -y install docker-compose

Then create a directory for spoolman:

mkdir ~/spoolman
cd ~/spoolman

Create a docker-compose config:

nano ~/spoolman/docker-compose.yml

docker-compose.yml:

version: '3.3'
services:
  spoolman:
    image: ghcr.io/donkie/spoolman:latest
    restart: unless-stopped
    volumes:
      - ./data:/home/ubuntu/.local/share/spoolman
    ports:
      - "7912:8000"
    environment:
      - TZ=America/New_York # Optional, defaults to UTC

You may want to change the timezone. A list is available here Then run:

sudo docker-compose up -d

You should now be able to access the interface at http://ipaddress:7912 (replace ipaddress with your pi/host's ip address)

Create your first Vendor, Filament, and then Spool in the UI there. When I tried to configure moonraker in the next step it failed without an initial spool existing in the database, so I wouldn't skip this.

Configuration

Now we need to configure moonraker to use spoolman.

Pop open your moonraker.conf file and add the following:

# enables spool management
[spoolman]
server: http://ipaddress:7912
#   URL to the Spoolman instance. This parameter must be provided.
sync_rate: 5
#   The interval, in seconds, between sync requests with the
#   Spoolman server.  The default is 5.
``` Once again, we need to replace `ipaddress` with the ip address of the host system. If it is the same as the pi (the one running moonraker) you can also simply use `localhost` instead

Restart moonraker and reload Fluidd/mainsail/etc and you should now see a `spoolman` section on the dashboard.
You can also verify in your `moonraker.log` file, look for a line like this:
```2023-08-08 10:53:43,664 [server.py:load_component()] - Component (spoolman) loaded```

Remember, even without using a compatible UI, Klipper/moonraker will still track filament use against the last spool selected.

We can also add commands that allow us to select the spool regardless of the UI:

**printer.cfg**:
```ini
[gcode_macro SET_ACTIVE_SPOOL]
gcode:
  {% if params.ID %}
    {% set id = params.ID|int %}
    {action_call_remote_method(
       "spoolman_set_active_spool",
       spool_id=id
    )}
  {% else %}
    {action_respond_info("Parameter 'ID' is required")}
  {% endif %}

[gcode_macro CLEAR_ACTIVE_SPOOL]
gcode:
  {action_call_remote_method(
    "spoolman_set_active_spool",
    spool_id=None
  )}

These commands can be used like SET_ACTIVE_SPOOL ID=5 and CLEAR_ACTIVE_SPOOL to select (or clear) the spool. Spools are selected by spool-id, which you can see on the spoolman UI where you create new spools. These commands can even be used in your "Custom Filament Gcode" in the slicer to allow filament profiles to select spools automatically.

Mainsail/Fluidd allow for integration with the klipper/crowsnest webcam to scan qrcodes from spools and automatically select the proper spool at the start of a print/etc. QRcodes can be printed from the spoolman web UI.

If you are not using mainsail/fluidd or you want it to function without the UI, I wrote a small script that will scan qrcodes from klipper cameras and command spoolman to select the spool it identifies.

This can be triggered from a macro which allows you to put it in your start gcode.

The code and instructions are below:

Scanning Spool QRcodes

This functionality requires you to install the zbar-tools package for scanning codes and the gcode_shell_command Klipper extension to allow klipper to trigger shell scripts.

# Install zbar-tools for reading qrcodes
sudo apt install zbar-tools
# Install gcode_shell_command to run scripts from klipper macros
cd /home/pi/klipper/klippy/extras/
wget https://raw.githubusercontent.com/th33xitus/kiauh/master/resources/gcode_shell_command.py

Then we add some config to our klipper config file:

printer.cfg

[gcode_shell_command qrcode_qrscanner]
## NOTE: Change the path below if your klipper config is not in the default path ##
command: sh /home/pi/printer_data/config/qrcodespoolman.sh
verbose: True
timeout: 2.

[gcode_macro QRCode_Scan]
gcode:
    RUN_SHELL_COMMAND CMD=qrcode_qrscanner

And create a shell script:

qrcodespoolman.sh (place in your config folder next to printer.cfg)

#!/bin/sh

########################################## WARNING: ##############################################
### This script assumes you are using a crowsnest webcam on the same host and the first camera ###
###      Adjust the paths and addresses below as needed to work with your configuration        ###
##################################################################################################

## Capture a snapshot from the camera and store it in a jpg file
wget http://localhost/webcam/?action=snapshot -O /home/pi/printer_data/gcodes/qrcode.jpg

## Read any QRcodes from the image and strip just the spool-id from the data in the code
SPOOLID=$(zbarimg -S*.enable /home/pi/printer_data/gcodes/qrcode.jpg | sed 's/[^0-9]*\([0-9]\+\).*/\1/')

## Return the spool-id in the console (this is mostly for debugging purposes)
echo $SPOOLID

## Make an API call to spoolman selecting the spool that matches the spool-id
curl -X POST -H "Content-Type: application/json" -d "{\"spool_id\": \"$SPOOLID\"}" http://localhost:7125/server/spoolman/spool_id

Please read through the comments in those snippets, particularly if your klipper config is not located in /home/pi/printer_data/config or your camera is not connected to the same machine. You may need to make adjustments to fit your machine.

The paths and addresses used in the example should work for anyone using a pi with a single printer and the first/only camera configured in crowsnest.

If all goes well you should now be able to trigger this action with the following command:

QRCODE_SCAN

You can place that in your start gcode to have it triggered at the start of every print.

The command does the following:

  • Triggers the qrcode script, which does the rest:
  • Asks moonraker for a snapshot from the webcam
  • Locates and scans any qrcode in the image
  • Strips out any data in the qrcode except for the spool id
  • Tells moonraker to tell spoolman to select that spool id

Updating Spoolman

To update your spoolman instance, assuming you have installed in ~/spoolman, you can use the following command:

cd ~/spoolman;sudo docker-compose stop;sudo docker-compose pull;sudo docker-compose up -d

NOTE: Avoid using docker-compose down as it will wipe out the storage volumes, likely taking your spool database with it.

You also may want to consider using watchtower to automatically keep docker containers updated, but that is outside the scope of this guide.

Bonus screenshots

Spoolman UI - Spools A screenshot of the UI from spoolman, show a list of spools configured in the database

Fluidd UI - Spool Widget A screenshot of a widget from the Fluidd dashboard showing the currently selected spool in an image and some stats about it as well as a button to change spools

Fluidd UI - Spool Selection Dialog

A screenshot of the spool selection dialog which shows a list of spools that can be selected from to choose the one used for filament tracking. Details of each spool are shown including an image with the color, the storage location, and the last used date-time

Conclusion

I hope this little guide helps anyone interested in trying out spoolman, its a great tool that fulfills a function in Klipper that I've been looking for for a while, and it does so very well!

I just want to reiterate, this is not my project. I am just a Klipper fan who wanted to get the word out on what I think is a really great project that a lot of Klipper users may like.

That said, I hope my guide can help those users give it a try!

And if you have any trouble, or just questions/concerns, leave a comment below and I will do my best to help!

[-] [email protected] 231 points 8 months ago

Gotta do what you need to.

Hopefully kbin development can fix their moderation tools and eventually be reconnected!

[-] [email protected] 44 points 9 months ago

so that I don't need to fellate myself on public forums

But you still do anyway, because you like the way it feels

[-] [email protected] 35 points 10 months ago

I closed my family shared account and started pirating Netflix shows/movies instead.

We paid for the convenience. I will happily just pirate if that's what they want 🤷

[-] [email protected] 45 points 10 months ago

and where exactly is it saved?

On your phone, silly.

78
submitted 10 months ago* (last edited 10 months ago) by [email protected] to c/[email protected]

Given the recent attack, I think this is a good opportunity to remind of the importance of using 2FA.

(although it doesn't appear to make any difference in this case as session cookies were being exploited so login credentials were not needed)

But for me at least, this event has made me go back and take another shot at setting up 2FA.

I am happy to report I finally got it working on all my Lemmy accounts/instances, so I thought I'd share some tips:

  • I still haven't figured out how to set up via desktop, use a mobile browser.
  • Follow these steps:
    • Check the enable 2fa box on your account settings and click Save
    • A message will show about a button appearing when the page refreshes
    • The button usually doesn't appear for me at first.
    • You can simply manually refresh the page at this point to make the button appear
    • The button should now be visible. Click the button.
    • This opens a otpauth:// link which on a mobile device should be handled by a 2FA app if you have one installed.
  • Authy does not work: It will generate a code happily but that code will not work when you try to login to your Lemmy account.
  • Google Authenticator worked for me. It appears the type of TOTP code Lemmy is using is not compatible with some authenticator apps.
  • I think if you can find a desktop app that registers as a provider for the otpauth:// links it may be possible to do on desktop as well.
  • You can also pull the secret= value from the link to manually add it to an authenticator on/from desktop.

After several failed attempts previously, I finally figured out Authy was the problem and I have now secured all my Lemmy accounts with 2FA. Annoying that I have to use GA, but that appears to be an Authy issue not a Lemmy one.

2FA might not have made any difference today but it very well might in the future.

Stay safe everyone! 🔐

17
submitted 10 months ago by [email protected] to c/[email protected]
4
submitted 10 months ago by [email protected] to c/[email protected]
2
Beans Meme (lemmy.world)
submitted 10 months ago by [email protected] to c/[email protected]

A simple formula for Lemmy meme content:

  • Reddit sucks.
  • Beans are good.
  • Repeat as needed until the server responds.
[-] [email protected] 434 points 10 months ago

Test:

Upvote if you can see this comment. 👍

6
submitted 10 months ago by [email protected] to c/[email protected]

Here's a quick and dirty Getting Started guide for those newly considering Klipper.

I highly recommend you do further reading and familiarize yourself more with how Klipper works before jumping right in, but this is a basic outline of the setup process:

Getting Started Guide for Klipper Firmware

Klipper is a 3D printer firmware that offloads the processing power to a separate computer, such as a Raspberry Pi, while using the printer's existing electronics for low-level control. This guide will walk you through the process of getting started with Klipper firmware on your 3D printer.

Note: This guide assumes you have basic knowledge of 3D printers and their components. It also assumes you have a compatible printer and a computer (Raspberry Pi or similar) available.

  1. Prepare the Hardware:

    • Ensure you have a compatible printer that supports Klipper firmware. Check the Klipper documentation or community forums for a list of supported printers. Virtually any printer which works on Marlin should work on Klipper.
    • Obtain a computer, traditionally a Raspberry Pi, to run the Klipper Host software. You'll need to install the Klipper Host software on this computer and connect it to your printer's control board. It's best to use a dedicated Linux computer for this, not a shared computer that will be used for other tasks.
  2. Install the Required Software:

    • Set up your Raspberry Pi (or other dedicated computer) with a Linux distribution such as Raspbian or Ubuntu.
    • Install the Klipper/etc using KIAUH
    • Alternatively, use a premade OS like MainsailOS.
  3. Connect the Hardware:

    • Power off your printer and unplug it from the power source.
    • Identify the serial connection on your printer's control board, usually labeled "Serial" or "UART."
    • Connect the Raspberry Pi to the control board using a USB cable or appropriate connectors.
    • Double-check the connections and ensure they are secure.
  4. Flash the Firmware:

    • Following the instructions in the Klipper docs, compile the Klipper firmware by running the appropriate command on the Raspberry Pi.
    • Transfer the compiled firmware file to your printer's control board using an sdcard or usb flashing process. This will be the same process as you used to flash Marlin.
  5. Configure Klipper:

    • Create or modify the printer.cfg file to configure your specific printer. This file defines parameters like stepper motor settings, endstop configurations, and thermistor values. Refer to the Klipper documentation for guidance on configuring printer.cfg.
    • Many sample configs are available on the klipper github or your board manufacturer's github page.
  6. Setting MCU ID

    • Once you have acquired your sample config, you will need to update the mcu id. For usb devices this will be the value for serial: under [mcu]
    • Connect the printer to your host and turn it on.
    • Run this command from SSH/terminal: ls /dev/serial/by-id/*
    • You should see an ID in the output, that is your serial: value.
    • If you get a "File or folder not found" error, that means no id was found and you should backtrack and repeat the previous steps.
  7. Test and Calibrate:

    • Power on your printer and connect to the Klipper firmware through your chosen web interface (Mainsail/Fluidd/etc)
    • If all goes well you should see a "Ready" state from the printer.
    • Perform calibration procedures, such as bed leveling, PID tuning, and steps per millimeter calibration, to ensure accurate prints. The Klipper documentation provides detailed instructions for these procedures.
    • Ellis' Print Tuning Guide is a great resource for further calibration
  8. Customize and Fine-tune:

    • Explore the Klipper configuration options to customize your printer's behavior and optimize its performance. The configuration file allows you to fine-tune various settings and enable advanced features.
    • Join the Klipper Discord, Lemmy, or other online communities to seek help, share experiences, and learn from other Klipper users.

Congratulations!

You have successfully started using Klipper firmware on your 3D printer!

Enjoy the enhanced performance, flexibility, and advanced features that Klipper brings to your printing experience. Remember to refer to the Klipper documentation for in-depth explanations, troubleshooting, and updates. Happy printing!

3
Welcome to Klipper! (lemmy.world)
submitted 10 months ago* (last edited 10 months ago) by [email protected] to c/[email protected]

There didn't seem to be a klipper community yet, so I made one.

I personally am fairly active on the Klipper discord and previously on the klipper subreddit.

Here are some Klipper links to get you started:

Klipper

  • Klipper3d - The Klipper documentation.
  • Config Reference - This document is a reference for options available in the Klipper config file.
  • G-code Commands - This document describes the commands that Klipper supports.
  • Status Reference - This document is a reference of printer status information available in Klipper macros, display fields, and via the API Server.
  • Command Templates - This document provides information on implementing G-Code command sequences in gcode_macro (and similar) config sections.

Companion software

view more: next ›

Rootiest

joined 11 months ago
MODERATOR OF