battery improvements and pc start
This commit is contained in:
7
battery_plot.py
Normal file
7
battery_plot.py
Normal file
@@ -0,0 +1,7 @@
|
||||
import plotly.express as px
|
||||
import pandas as pd
|
||||
from pathlib import Path
|
||||
|
||||
df = pd.read_csv(Path(Path.home(), "data/battery_monitor.csv"))
|
||||
fig = px.line(df, x="time", y="percent", title="Battery Charge over Time")
|
||||
fig.show()
|
||||
@@ -8,12 +8,26 @@ https://community.frame.work/t/fingerprint-scanner-compatibility-with-linux-ubun
|
||||
|
||||
## Revert Kernel (if needed)
|
||||
|
||||
With koji
|
||||
|
||||
```bash
|
||||
sudo dnf install koji
|
||||
mkdir /tmp/kernel-download
|
||||
cd /tmp/kernel-download
|
||||
koji search build kernel-6.0.12*
|
||||
koji download-build --arch=x86_64 kernel-6.0.12-300.fc37
|
||||
sudo dnf install ./*.rpm
|
||||
```
|
||||
|
||||
```bash
|
||||
# Find the kernels you have installed
|
||||
sudo rpm -qa kernel
|
||||
|
||||
# List available kernels
|
||||
sudo ls /boot | grep vmlinuz
|
||||
|
||||
# Revert to a previous kernel
|
||||
grubby --set-default /boot/vmlinuz-5.14.10-300.fc35.x86_64
|
||||
sudo grubby --set-default /boot/vmlinuz-5.14.10-300.fc35.x86_64
|
||||
```
|
||||
|
||||
## Make DNF Fast
|
||||
@@ -133,7 +147,7 @@ ansible-playbook --ask-become-pass ansible/framework_fedora.yml
|
||||
|
||||
```bash
|
||||
# Create an encrypted drive
|
||||
sudo cryptsetup luksFormat
|
||||
sudo cryptsetup luksFormat /dev/sdb1
|
||||
|
||||
# LUKS Disk Encryption can use up to 8 key slots to store passwords. We can use these keys to auto mount LUKS device.
|
||||
# cryptsetup luksDump /dev/sda
|
||||
@@ -170,6 +184,24 @@ sudo cryptsetup luksOpen /dev/disk/by-uuid/1d7ce570-e695-47a0-9dda-5f14b5b20e21
|
||||
sudo cryptsetup luksClose backup0
|
||||
```
|
||||
|
||||
### Backup Disks
|
||||
|
||||
Backup disks will respect the following naming convention:
|
||||
|
||||
brand_size_purpose_year_month
|
||||
|
||||
So for a backup drive you would create:
|
||||
|
||||
`wd_4tb_backup_2023_01`
|
||||
|
||||
Or for an archive drive:
|
||||
|
||||
`samsung_1tb_archive_2023_01`
|
||||
|
||||
#### Disk Health
|
||||
|
||||
`smartctl -a /dev/sda`
|
||||
|
||||
### Create BTRBK Config
|
||||
|
||||
`sudo vim /etc/btrbk/btrbk.conf`
|
||||
@@ -388,3 +420,213 @@ sudo systemctl stop packagekit
|
||||
dconf write /org/gnome/software/allow-updates false
|
||||
dconf write /org/gnome/software/download-updates false
|
||||
```
|
||||
|
||||
## Battery Life
|
||||
|
||||
```bash
|
||||
grubby --args="nvme.noacpi=1" --update-kernel=ALL
|
||||
```
|
||||
|
||||
Enable automatic power profile switching on AC/Battery
|
||||
|
||||
1. `sudo mkdir /lib/udev/power-profiles`
|
||||
1. `sudo vim /lib/udev/power-profiles/power-saver`
|
||||
|
||||
```bash
|
||||
powerprofilesctl set power-saver
|
||||
```
|
||||
|
||||
1. `sudo chmod +x /lib/udev/power-profiles/power-saver`
|
||||
1. `sudo vim /lib/udev/power-profiles/performance`
|
||||
|
||||
```bash
|
||||
powerprofilesctl set performance
|
||||
```
|
||||
|
||||
1. `sudo chmod +x /lib/udev/power-profiles/performance`
|
||||
|
||||
sudo vim /etc/udev/rules.d/10-power.rules
|
||||
|
||||
```bash
|
||||
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/bin/bash /lib/udev/power-profiles/power-saver"
|
||||
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/bin/bash /lib/udev/power-profiles/performance"
|
||||
```
|
||||
|
||||
~~Calibrate with powertop~~
|
||||
|
||||
Powertop causes connection issues with USB while the computer is plugged in. Do not
|
||||
recommend.
|
||||
|
||||
```bash
|
||||
sudo dnf install powertop
|
||||
# This will take a while
|
||||
sudo powertop --calibrate
|
||||
sudo powertop
|
||||
```
|
||||
|
||||
~~Install and enable tlp~~
|
||||
|
||||
TLP seems to limit maximum performance. I'm leaving it here for posterity.
|
||||
Stick with powertop and power profiles daemon.
|
||||
|
||||
```bash
|
||||
sudo systemctl stop power-profiles-daemon.service
|
||||
sudo systemctl disable power-profiles-daemon.service
|
||||
sudo systemctl mask power-profiles-daemon.service
|
||||
|
||||
sudo dnf install tlp
|
||||
sudo systemctl mask systemd-rfkill.service
|
||||
sudo systemctl mask systemd-rfkill.socket
|
||||
sudo systemctl enable tlp.service --now
|
||||
sudo systemctl status tlp.service
|
||||
```
|
||||
|
||||
### Simple Battery Monitoring App
|
||||
|
||||
alarm charge_full_design device power subsystem voltage_min_design
|
||||
capacity charge_now hwmon2 present technology voltage_now
|
||||
capacity_level current_now manufacturer serial_number type
|
||||
charge_full cycle_count model_name status uevent
|
||||
|
||||
```bash
|
||||
sudo mkdir /etc/battery_monitor
|
||||
sudo vim /etc/battery_monitor/battery_monitor.sh
|
||||
```
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
CSV_LOCATION="/home/ducoterra/data"
|
||||
CSV_NAME="battery_monitor.csv"
|
||||
BATTERY_DATA_LOCATION="/sys/class/power_supply/BAT1"
|
||||
if [ ! -f $CSV_LOCATION/$CSV_NAME ];
|
||||
then
|
||||
mkdir -p $CSV_LOCATION;
|
||||
echo "time,percent,charge_now,charge_full,voltage_now,current_now,cycle_count,status" > $CSV_LOCATION/$CSV_NAME
|
||||
chown -R ducoterra:ducoterra $CSV_LOCATION
|
||||
fi
|
||||
time=$(date --iso-8601=seconds)
|
||||
percent=$(cat $BATTERY_DATA_LOCATION/capacity)
|
||||
charge_now=$(cat $BATTERY_DATA_LOCATION/charge_now)
|
||||
charge_full=$(cat $BATTERY_DATA_LOCATION/charge_full)
|
||||
voltage_now=$(cat $BATTERY_DATA_LOCATION/voltage_now)
|
||||
current_now=$(cat $BATTERY_DATA_LOCATION/current_now)
|
||||
cycle_count=$(cat $BATTERY_DATA_LOCATION/cycle_count)
|
||||
status=$(cat $BATTERY_DATA_LOCATION/status)
|
||||
|
||||
echo "$time,$percent,$charge_now,$charge_full,$voltage_now,$current_now,$cycle_count,$status" >> $CSV_LOCATION/$CSV_NAME
|
||||
```
|
||||
|
||||
`sudo vim /etc/systemd/system/battery_monitor.service`
|
||||
|
||||
```conf
|
||||
[Unit]
|
||||
Description=Records the current battery level
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/bash /etc/battery_monitor/battery_monitor.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
`sudo vim /etc/systemd/system/battery_monitor.timer`
|
||||
|
||||
```conf
|
||||
[Unit]
|
||||
Description=Run battery_monitor every 15 seconds
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*:*:0,15,30,45
|
||||
AccuracySec=10sec
|
||||
Persistent=true
|
||||
Unit=battery_monitor.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
```
|
||||
|
||||
`sudo systemctl start battery_monitor.timer`
|
||||
|
||||
## Turn Off Fingerprint When Laptop Lid Closed
|
||||
|
||||
To disable fingerprint authentication when the laptop lid is closed, and re-enable when it is reopened, we will use acpid to bind to the button/lid.* event to a custom script that will stop and mask the fprintd service on lid close, and unmask and start the fprintd service on lid open.
|
||||
|
||||
We also check that the HDMI cable is connected by testing the contents of /sys/class/drm/card0-HDMI-A-1/status.
|
||||
|
||||
Follow the steps below:
|
||||
|
||||
1. Create a .locks file in your home dir: `mkdir ~/.locks`
|
||||
1. Create file /etc/acpi/laptop-lid.sh with the following contents:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
lock=/home/ducoterra/.locks/fprint-disabled.lock
|
||||
|
||||
if grep -Fq closed /proc/acpi/button/lid/LID0/state # &&
|
||||
# This is used to detect if a display is connected.
|
||||
# For USB C displayport use:
|
||||
# grep -Fxq connected /sys/class/drm/card1-DP-2/status
|
||||
# For hdmi use:
|
||||
# grep -Fxq connected /sys/class/drm/card0-HDMI-A-1/status
|
||||
then
|
||||
touch "$lock"
|
||||
systemctl stop fprintd
|
||||
systemctl mask fprintd
|
||||
elif [ -f "$lock" ]
|
||||
then
|
||||
systemctl unmask fprintd
|
||||
systemctl start fprintd
|
||||
rm -f "$lock"
|
||||
fi
|
||||
```
|
||||
|
||||
2. Make the file executable with
|
||||
|
||||
`chmod +x /etc/acpi/laptop-lid.sh`
|
||||
|
||||
3. Create file /etc/acpi/events/laptop-lid with the following contents:
|
||||
|
||||
```bash
|
||||
event=button/lid.*
|
||||
action=/etc/acpi/laptop-lid.sh
|
||||
```
|
||||
|
||||
4. Restart the acpid service with:
|
||||
|
||||
`sudo service acpid restart`
|
||||
|
||||
Now the fingerprint will be used only when the lid is open.
|
||||
|
||||
In order to restore the correct state of the fprintd service if you disconnect/reconnect while the laptop is off, you may call the above script from a systemd init file. The steps to do this are the following:
|
||||
|
||||
1. Create a file named /etc/systemd/system/laptop-lid.service with the following contents:
|
||||
|
||||
```bash
|
||||
[Unit]
|
||||
Description=Laptop Lid
|
||||
After=suspend.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/etc/acpi/laptop-lid.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
WantedBy=suspend.target
|
||||
```
|
||||
|
||||
2. Reload the systemd config files with
|
||||
|
||||
`sudo systemctl daemon-reload`
|
||||
|
||||
3. Start the service with
|
||||
|
||||
`sudo systemctl start laptop-lid.service`
|
||||
|
||||
4. Enable the service so that it starts automatically on boot
|
||||
|
||||
`sudo systemctl enable laptop-lid.service`
|
||||
|
||||
Now the status should be correct even after connecting/disconnecting when the computer is off.
|
||||
|
||||
20
framework_pc.md
Normal file
20
framework_pc.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Fedora Gaming PC
|
||||
|
||||
## RDP with autologin
|
||||
|
||||
https://askubuntu.com/questions/1396745/21-10-make-screen-share-password-permanent
|
||||
|
||||
### Autologin
|
||||
|
||||
1. Enable autologin from the gnome user settings
|
||||
|
||||
### Create an RDP keychain
|
||||
|
||||
1. Open "Passwords and Keys" app on the desktop. Password and Keys App
|
||||
2. Create a new "Password Keyring" using the "+" icon. Create a new Password Keyring
|
||||
3. Name the new keyring "Zero Security Keyring" or something that reminds you it will be un-encrypted. Leave the password blank so that the keychain is unencrypted. You will be warned that you are creating an unencrypted keychain.
|
||||
4. Right-click on the new keyring and choose "set as default" Set the new keyring as the default
|
||||
5. Click on the old "Default" keyring and delete "GNOME Remote Desktop RDP Credentials" Delete the old RDP password from the "Default keyring"
|
||||
6. Open settings and set a new RDP password set a new RDP password
|
||||
7. Check that the password was stored under the "Zero Security Keyring" Check that the RDP password was stored in the new keychain
|
||||
9. Right click on "Default" keyring and choose "set as default" Remember to set "Default keyring" as the default
|
||||
Reference in New Issue
Block a user