Arduino Motion Sensor Guide (Using a PIR Sensor)

A PIR (Passive Infrared) sensor detects motion by measuring changes in infrared radiation emitted by objects (like humans or animals) within its field of view.

PIR sensors are commonly used for:

Component Quantity Notes
Arduino Uno (or Nano, Mega, etc.) 1 Any compatible board
PIR Motion Sensor (HC-SR501 or similar) 1 Adjustable sensitivity and delay
Breadboard 1 For easy connections
Jumper wires ~5 Male-to-male recommended
LED 1 Optional for visual indication
220Ω resistor 1 For LED current limiting
USB cable 1 For programming and power

 Understanding the PIR Sensor

Typical PIR module (e.g., HC-SR501) has 3 pins:

Pin Label Function
1 VCC Power (connect to +5V)
2 OUT Sends HIGH when motion is detected
3 GND Connects to Ground

Adjustable knobs (optional):

  • Sensitivity: changes detection range (typically 3–7 meters)
  • Time delay: how long output stays HIGH after motion (usually 0.3s–5min)

Wiring Diagram

PIR Sensor Arduino Notes
VCC 5V Power supply
OUT D2 Digital input pin
GND GND Common ground
LED (+) D13 Visual output (optional)
LED (–) GND (via 220Ω resistor) Current limit

Connect VCC → 5V, GND → GND, OUT → D2, LED → D13 (optional)

Arduino Code Example


// PIR Motion Sensor with LED Example

int pirPin = 2; // PIR sensor output pin
int ledPin = 13; // LED pin

int pirState = LOW; // Default state
int val = 0; // Variable for reading the pin status

void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("PIR Motion Sensor Active");
}

void loop() {
val = digitalRead(pirPin); // Read input value from PIR

if (val == HIGH) {
digitalWrite(ledPin, HIGH); // Turn LED ON
if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // Turn LED OFF
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
}

Explanation: The PIR output goes HIGH when motion is detected. The LED turns on and a message is printed to the Serial Monitor.

How It works

  1. Warm-up time: After powering up, the PIR sensor takes ~30–60 seconds to stabilize.
  2. Detection: When an object moves, the sensor’s output pin goes HIGH.
  3. Reset: After the set delay, the output returns LOW until new motion is detected.

1. Control a Relay

Use motion detection to control a light or appliance:


int relayPin = 8; // connect to relay module IN pin
// Replace ledPin with relayPin in code

2. Buzzer Alarm

Add a buzzer that sounds when motion is detected:


int buzzerPin = 9;
digitalWrite(buzzerPin, HIGH);

3. Serial Logging

Send motion logs to a computer or IoT platform for analysis.

4. Automation

Combine PIR with an LDR (light sensor) so it only triggers lights at night.


[mai mult...]

RFID Door Lock with Arduino

In this detailed guide, you’ll learn how to build an RFID door lock system using an Arduino Uno and an MFRC522 RFID reader. The system reads RFID cards or keyfobs, checks authorization, and controls a solenoid lock or servo latch to grant access. It’s perfect for home automation, maker projects, or educational demonstrations.

Solenoid Lock Wiring

Arduino D7 → Gate of MOSFET (via 100Ω resistor)
MOSFET Source → GND (common)
MOSFET Drain → Solenoid negative terminal
Solenoid positive → +12V
12V supply GND → Arduino GND
Flyback diode across solenoid (1N4007, cathode to +12V)

Optional Servo Connection

Servo Signal → D7 (PWM)
Servo V+ → 5V external supply
Servo GND → Common GND

Arduino Code — Basic Version

This version uses a hard-coded list of authorized RFID tags.

/* RFID Door Lock - Basic Version */
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>

#define RST_PIN 9
#define SDA_PIN 10
MFRC522 rfid(SDA_PIN, RST_PIN);

#define ACTUATOR_TYPE 0  // 0=Solenoid/Relay, 1=Servo
const int RELAY_PIN = 7;
const int LED_PIN = 4;
const int BUZZER_PIN = 5;
const int SERVO_PIN = 7;
const unsigned long UNLOCK_MS = 3000;
Servo lockServo;

void setup() {
  Serial.begin(115200);
  SPI.begin();
  rfid.PCD_Init();
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  if (ACTUATOR_TYPE == 0) {
    pinMode(RELAY_PIN, OUTPUT);
    digitalWrite(RELAY_PIN, LOW);
  } else {
    lockServo.attach(SERVO_PIN);
    lockServo.write(0);
  }
  Serial.println("RFID door lock ready");
}

// Replace these with your own card UIDs
byte allowedUIDs[][4] = {
  {0xDE, 0xAD, 0xBE, 0xEF},
  {0x11, 0x22, 0x33, 0x44}
};
const int allowedCount = sizeof(allowedUIDs)/4;

bool uidAllowed(byte *uid, byte uidSize) {
  if (uidSize != 4) return false;
  for (int i=0;i<allowedCount;i++) {
    bool match = true;
    for (int j=0;j<4;j++) if (allowedUIDs[i][j] != uid[j]) { match = false; break; }
    if (match) return true;
  }
  return false;
}

void unlockAction() {
  Serial.println("UNLOCK!");
  digitalWrite(LED_PIN, HIGH);
  tone(BUZZER_PIN, 1000, 150);
  if (ACTUATOR_TYPE == 0) {
    digitalWrite(RELAY_PIN, HIGH);
    delay(UNLOCK_MS);
    digitalWrite(RELAY_PIN, LOW);
  } else {
    lockServo.write(90);
    delay(UNLOCK_MS);
    lockServo.write(0);
  }
  digitalWrite(LED_PIN, LOW);
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent()) return;
  if (!rfid.PICC_ReadCardSerial()) return;

  Serial.print("Card UID:");
  for (byte i=0;i<rfid.uid.size;i++) {
    Serial.print(" ");
    Serial.print(rfid.uid.uidByte[i], HEX);
  }
  Serial.println();

  if (uidAllowed(rfid.uid.uidByte, rfid.uid.size)) {
    Serial.println("Access granted");
    unlockAction();
  } else {
    Serial.println("Access denied");
    for (int i=0;i<2;i++) {
      tone(BUZZER_PIN, 600, 150);
      digitalWrite(LED_PIN, HIGH);
      delay(200);
      digitalWrite(LED_PIN, LOW);
      delay(100);
    }
  }

  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();
}

Advanced Version — Store Tags in EEPROM

This version allows adding and removing authorized cards dynamically through the Serial Monitor.

/* RFID Door Lock - EEPROM Version */
#include <SPI.h>
#include <MFRC522.h>
#include <EEPROM.h>

#define RST_PIN 9
#define SDA_PIN 10
MFRC522 rfid(SDA_PIN, RST_PIN);

#define RELAY_PIN 7
#define LED_PIN 4
#define BUZZER_PIN 5
#define UNLOCK_MS 3000
#define MAX_TAGS 20
#define UID_SIZE 4
#define EEPROM_START 0

void setup() {
  Serial.begin(115200);
  SPI.begin();
  rfid.PCD_Init();
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  Serial.println("RFID lock with EEPROM ready");
}

/* Helper functions omitted for brevity in this preview — see full code in guide */

Serial commands:

  • l — List stored tags
  • a — Add a new tag (scan after command)
  • r — Remove a tag
  • c — Clear all stored tags

Power Considerations

  • Use a separate 12V supply for the solenoid; common the grounds.
  • Add a large capacitor (470µF–2200µF) across the solenoid supply.
  • Always include a flyback diode to protect electronics.
  • If using a servo, power it from an external 5V supply.

Mechanical Installation

  • Ensure alignment between lock and strike plate.
  • Provide a manual override or emergency key.
  • Mount RFID reader within 5–10 cm of tag presentation area.
  • Keep metal objects away from the RC522 antenna.

Testing Steps

  1. Upload code and open Serial Monitor (115200 baud).
  2. Scan a card — its UID should appear.
  3. Add card to allowed list or EEPROM memory.
  4. Test actuator operation and timing.
  5. Confirm power supply stability under load.

Troubleshooting

Issue Possible Cause Fix
No response from reader Wrong wiring or 5V used Use 3.3V and correct SPI pins
Actuator not moving Power supply too weak or wrong driver Use proper MOSFET/relay and check GND
UIDs print gibberish Wrong Serial baud rate Match Serial.begin(115200)
Unstable lock Power noise Add capacitor or separate supply

Security Enhancements

  • Use MIFARE DESFire or NTAG cards for better encryption.
  • Add a keypad for two-factor access (RFID + PIN).
  • Implement attempt-limit lockout for brute-force protection.
  • Use metal enclosure and tamper switch for extra security.

Optional Upgrades

  • OLED/LCD display for user feedback
  • Wi-Fi / MQTT integration (ESP8266 or ESP32)
  • RTC + SD card logging for audit trail
  • Battery backup for power loss protection
  • Cloud dashboard or mobile control app.
[mai mult...]

Arduino Temperature Sensor

You’ll build a simple digital thermometer that measures ambient temperature using a temperature sensor (like the LM35, TMP36, or DHT11) and displays the reading via the Serial Monitor or LCD screen.

We’ll cover two main versions:

  1. Basic Version — Using an analog temperature sensor (LM35 or TMP36).

  2. Advanced Version — Using a digital sensor (DHT11 or DHT22) with humidity support.

Materials Needed

Component Quantity Description
Arduino Uno (or Nano/Mega) 1 The main microcontroller board
LM35 or TMP36 sensor 1 Analog temperature sensor
Breadboard 1 For easy circuit assembly
Jumper wires ~6 Male-to-male wires
USB cable 1 To connect Arduino to your computer
(Optional) 16×2 LCD Display 1 For local display
(Optional) 10kΩ Potentiometer 1 LCD contrast control

Step 1: Understand the Sensor

 LM35 Pinout

Pin Label Function
1 VCC +5V from Arduino
2 VOUT Analog output (connect to Arduino analog input)
3 GND Ground

The LM35 outputs 10 mV per °C.
So if the output voltage = 250 mV → temperature = 25°C.

Step 2: Wiring the LM35 to Arduino

Connections

LM35 Pin Connects To
VCC 5V on Arduino
GND GND on Arduino
VOUT A0 on Arduino

Circuit Diagram (Text Form)

[Arduino 5V] ---- [LM35 VCC]
[Arduino GND] ---- [LM35 GND]
[Arduino A0] ---- [LM35 OUT]

Step 3: Arduino Code (LM35 Version)

// Simple Temperature Sensor with LM35

const int sensorPin = A0; // LM35 connected to A0
float temperatureC;

void setup() {
Serial.begin(9600);
Serial.println(“LM35 Temperature Sensor”);
}

void loop() {
int sensorValue = analogRead(sensorPin); // Read analog value
float voltage = sensorValue * (5.0 / 1023.0); // Convert to voltage
temperatureC = voltage * 100; // 10mV per degree C (LM35)

Serial.print(“Temperature: “);
Serial.print(temperatureC);
Serial.println(” °C”);

delay(1000); // Update every second
}

Explanation

  • analogRead(A0): reads 0–1023 corresponding to 0–5V.

  • Voltage calculation: (value * 5.0) / 1023.0.

  • LM35 output scaling: 10 mV = 1°C → multiply voltage by 100.

Step 4: Viewing Data

  • Open Arduino IDE → Tools → Serial Monitor.

  • Set baud rate = 9600.

  • You’ll see continuous readings like:

    Temperature: 24.87 °C
    Temperature: 25.02 °C

Step 5: Calibration (Optional)

Real sensors may have small offsets.
You can adjust the output manually:

temperatureC = (voltage * 100) - 0.5; // Adjust by small offset

Compare readings with a known thermometer and tweak the offset until accurate.

Advanced: Using DHT11 / DHT22 (Digital Sensor)

Required Library

  • Install “DHT sensor library” by Adafruit from Arduino Library Manager.

Wiring (DHT11)

DHT11 Pin Connects To
VCC 5V
GND GND
DATA Digital Pin 2

Code (DHT11)

#include "DHT.h"

#define DHTPIN 2 // Data pin connected to digital pin 2
#define DHTTYPE DHT11 // or DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
dht.begin();
}

void loop() {
float tempC = dht.readTemperature();
float humidity = dht.readHumidity();

if (isnan(tempC) || isnan(humidity)) {
Serial.println(“Failed to read from DHT sensor!”);
return;
}

Serial.print(“Temperature: “);
Serial.print(tempC);
Serial.print(” °C, Humidity: “);
Serial.print(humidity);
Serial.println(” %”);

delay(2000);
}

Step 6: (Optional) Display on LCD

If using a 16×2 LCD (I2C):

  1. Install “LiquidCrystal_I2C” library.

  2. Connect SDA → A4, SCL → A5.

  3. Example snippet:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
lcd.init();
lcd.backlight();
}

void loop() {
lcd.setCursor(0, 0);
lcd.print(“Temp: “);
lcd.print(temperatureC);
lcd.print(“C”);
}

Troubleshooting Guide

Issue Possible Cause Solution
No readings / 0°C Wrong wiring or pin Check sensor pins
Negative readings Wrong sensor type (TMP36 needs offset) Adjust formula
Unstable readings Noisy analog signal Add capacitor (0.1 µF) between VOUT & GND
“nan” or “Failed to read” DHT library issue Check sensor type & connections

Next Steps & Enhancements

  • Add OLED / LCD display for portable thermometer

  • Store data using SD card module

  • Upload readings to the cloud via ESP8266 / WiFi module

  • Use RGB LED to indicate temperature range (blue/cool, red/hot)

  • Build an IoT dashboard (ThingSpeak, Blynk, etc.).

[mai mult...]

How to install macOS 15 Sequoia

What you need to check first

  1. Compatibility
    Make sure your Mac is officially supported by macOS 15 Sequoia. Supported models include:
    • iMac (2019 or later)
    • MacBook Air (2020 and later)
    • MacBook Pro (2018 and later)
    • Mac mini (2018 and later)
    • Mac Pro (2019 and later)
    • Mac Studio (all models)

  2. Backup Your Data
    Always back up your important files. Time Machine is a good option, or clone your drive. This protects against data loss if something goes wrong.

  3. Free Space
    Ensure you have enough free disk space. The installer itself requires several gigabytes, plus extra space for temporary files during installation.

  4. Power
    If using a laptop, keep it plugged into power throughout the update.

  5. Software & Firmware Updates
    It’s best to start from the latest version of your current macOS. Some firmware updates may be required before Sequoia can install properly.

Installation Methods

There are a few ways to install Sequoia:

  • Standard upgrade: from your current macOS via Software Update.

  • Clean install: erase the disk & install fresh.

  • Bootable installer: useful for multiple Macs, or offline reinstalls.

  • macOS Recovery: reinstall via recovery mode.

If you want to keep your apps, data, and settings:

  1. Open System Settings (or System Preferences on older macOS versions) → General → Software Update

  2. If Sequoia is available, click Upgrade Now (or “Update Now”)

  3. Read & accept the license agreement

  4. Enter your admin password if required

  5. Wait for the installer to download. Time depends on your internet speed

  6. Once the download finishes, the Mac will prompt you to restart and begin installation

  7. The Mac will reboot several times during the process

  8. After the final restart, follow setup prompts (region, Apple ID, etc.).

If you prefer a clean slate or need to install on multiple Macs:

  1. Download the macOS Sequoia installer
    It will appear as “Install macOS Sequoia” in your Applications folder.

  2. Prepare a USB drive (16 GB or larger)
    Format it as Mac OS Extended (Journaled) or APFS using Disk Utility.

  3. Create the bootable installer
    In Terminal, run:

    sudo /Applications/Install\ macOS\ Sequoia.app/Contents/Resources/createinstallmedia --volume /Volumes/MyUSB

    Replace MyUSB with your USB drive’s name.

  4. Boot from USB

    • Plug in the USB.

    • Restart while holding Option (⌥) on Intel Macs.

    • For Apple Silicon, hold the power button until startup options appear.

    • Choose the USB drive labeled “Install macOS Sequoia.”

  5. Erase / format the internal drive (optional for clean install)
    In macOS Utilities → Disk Utility → Show All Devices → select the internal drive → Erase → format as APFS. Warning: this erases all data.

  6. Run the installer
    Choose “Install macOS,” select your drive, and follow prompts.

  7. Setup after installation completes.

If your Mac won’t boot or you need to reinstall:

  • Intel Macs: hold Command-R at startup.

  • Apple Silicon: hold the power button until startup options appear.

  • Choose “Reinstall macOS,” select your disk, and follow the prompts.

Troubleshooting / Tips

  • Installer doesn’t appear → check Mac compatibility, firmware updates, or free disk space

  • Slow download / installation → use reliable internet and keep plugged into power

  • Errors during install → run Disk Utility → First Aid on your drive

  • Post-install issues → update apps for Sequoia compatibility; some older apps may need patches.

[mai mult...]

How to install Android 13 on a phone

Installing a new Android version can be straightforward if your device is supported, but it may also involve manual flashing for advanced users.

  • Back up all important data (installing may wipe your phone)

  • Make sure your phone’s bootloader and warranty terms are understood—manual flashing can void warranties

  • Your phone must have at least 50% battery

  • Use the original USB cable for best results.

Check Compatibility

Not every device supports Android 13.

  • Google Pixel phones officially support Android 13 (Pixel 4 and newer).

  • Other brands (Samsung, OnePlus, Xiaomi, etc.) roll out updates in phases.

📌 To check:

  • Go to Settings → System → System Update. If Android 13 is available, you’ll see a download prompt.

3. Method 1: Install Android 13 via OTA (Recommended)

This is the safest and easiest way.

  1. Connect to Wi-Fi

  2. Open Settings → System → System update

  3. Tap Check for update

  4. If Android 13 is available, tap Download and install

  5. Wait for installation → phone will reboot → Android 13 installed.

Method 2: Sideload Android 13 OTA (Manual Update)

If the OTA hasn’t reached you yet but your phone supports it, you can manually sideload.

Requirements

  • A PC with ADB & Fastboot tools installed

  • USB cable

  • Download the official OTA update file from Google’s developer site.

Steps

  1. Enable Developer Options:

    • Go to Settings → About phone → Tap Build number 7 times

    • Then enable USB debugging in Developer Options.

    • Reboot into Recovery Mode:

      • Power off phone → Hold Power + Volume Down until bootloader appears.

      • Use volume keys to select Recovery Mode → press Power.

  2. Connect to PC and verify connection:

    adb devices
  3. Apply update via ADB sideload:

    adb sideload ota_filename.zip
  4. Wait until the process finishes → reboot → Android 13 installed.

5. Method 3: Flash Factory Image (Advanced)

This is a clean install and will wipe your phone.

Requirements

  • A PC with ADB & Fastboot tools

  • Official factory image for your phone from Google’s factory images site.

  • Bootloader unlocked.

Steps

  1. Unlock Bootloader (this will erase all data):

    fastboot flashing unlock
  2. Extract Factory Image: Download and unzip the file.

  3. Run Flash Script: Inside the extracted folder, run:

    • On Linux/Mac:

      ./flash-all.sh
    • On Windows:

      flash-all.bat
  4. Phone will reboot → fresh install of Android 13.

6. After Installation

  • Go through setup wizard

  • Restore backup if you created one

  • Check for security updates in Settings.

[mai mult...]

Windows installation error: the computer restarted unexpectedly during bios

To resolve the “The computer restarted unexpectedly” Windows installation error, press Shift + F10 at the error screen to open Command Prompt. Type regedit and press Enter to launch Registry Editor, navigate to HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\ChildCompletion, double-click setup.exe, change its value data to 3, and click OK. Then close the Registry Editor and Command Prompt, click OK on the error message, and the installation should proceed.

1. Access Command Prompt:
When the error message appears on your screen, press Shift + F10 simultaneously to open the Command Prompt.

2. Open Registry Editor:
In the Command Prompt window, type regedit and press Enter.

3. Navigate to the Registry Key:
In the Registry Editor, browse to the following path: HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\ChildCompletion.

4. Modify the setup.exe value:
In the right-hand pane, find and double-click on the setup.exe DWORD value.
Change the Value data from its current setting to 3.
Click OK to save the change.

5. Proceed with Installation:
Close the Registry Editor and the Command Prompt windows. On the error dialog box, click OK to restart your computer. The Windows installation should now continue without interruption.

Other Potential Causes and Solutions
If the above steps don’t work, the issue could be caused by other factors, such as:

Corrupted Installation Media:

Recreate the Windows installation media using the Microsoft Media Creation Tool.

Hardware Issues:

Check your hard drive cables and try a different USB port for the installation media.

Outdated BIOS:

Update your BIOS to the latest version from your computer manufacturer’s website.

Outdated Drivers:

Ensure all necessary drivers are installed and updated, especially for storage devices.

[mai mult...]

How to install and configure Solus Budgie

1. Download Solus Budgie

  1. Go to the official Solus website: https://getsol.us.

  2. Click Download → Select Budgie edition (the flagship desktop).

  3. Download the .iso file — about 2 GB.

  4. After download, verify checksum (optional but recommended):

    • On Linux:

      bash
      sha256sum Solus-*.iso

      Compare with the checksum on the website.

    • On Windows: Use a tool like CertUtil in Command Prompt:

      cmd
      certutil -hashfile Solus-*.iso SHA256

2. Create a Bootable USB

You’ll need an empty USB (≥4 GB).

  • On Windows: Use Rufus

    1. Insert your USB.

    2. Open Rufus → Select the Solus ISO → Leave partition scheme as GPT (for UEFI).

    3. Click Start.

  • On Linux: Use balenaEtcher or the dd command:

    bash
    sudo dd if=Solus-*.iso of=/dev/sdX bs=4M status=progress
    sync

    (Replace /dev/sdX with your USB device — be very careful!)

3. Install Solus Budgie

  1. Boot from USB: Restart your PC, open BIOS/UEFI boot menu (F12, Esc, or F2 usually), select your USB drive.

  2. Live environment: Choose “Start Solus” to boot into the live desktop.

  3. Launch installer (icon on desktop).

  4. Go through installer screens:

    • Language & Region

    • Keyboard Layout

    • Time Zone

    • Installation Type:

      • Erase disk (wipes all data — easiest)

      • Manual partitioning (if you dual-boot — you’ll need at least / and swap partitions; optionally /home)

    • User Setup:

      • Create username, password, computer name.

    • Summary → click Install.

  5. Wait until installation completes (~5–15 min).

  6. Reboot and remove the USB when prompted.

4. Post-Installation Configuration

a. Update the system

Open Terminal and run:

bash
sudo eopkg upgrade

This fetches the latest packages and security patches.

b. Install additional drivers (if needed)

  • Open DoFlicky (Solus Hardware Driver tool) from the menu.

  • It will suggest proprietary GPU/Wi-Fi drivers if required.

  • Install, reboot.

c. Enable firewall

Solus includes ufw (Uncomplicated Firewall):

bash
sudo eopkg install ufw
sudo systemctl enable --now ufw
sudo ufw enable

d. Essential apps

Solus uses eopkg as its package manager. Examples:

bash
# Web browsers
sudo eopkg install firefox
sudo eopkg install chromium
# Office suite
sudo eopkg install libreoffice

# Media player
sudo eopkg install vlc

Or use Software Center for a GUI approach.

e. Budgie desktop tweaks

Install Budgie settings:

bash
sudo eopkg install budgie-desktop-view budgie-extras

Then open Budgie Desktop Settings:

  • Change Panel Layout

  • Add Applets (e.g., system monitor, workspace switcher)

  • Adjust Theme (icon packs, GTK theme)

5. Optional Customizations

Themes & Icons

bash
sudo eopkg install arc-theme papirus-icon-theme

Then switch in Budgie Desktop Settings → Style.

Enable Night Light

  • Settings → Devices → Displays → Night Light

  • Adjust schedule and warmth.

Performance tweaks

  • Disable unneeded startup apps: Settings → Startup Applications

  • Install preload (caches frequently used apps):

    bash
    sudo eopkg install preload
    sudo systemctl enable --now preload

Snap & Flatpak support

Solus supports them for extra software:

bash
# Flatpak
sudo eopkg install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Snap
sudo eopkg install snapd
sudo systemctl enable –now snapd

[mai mult...]

RetroArch on Raspberry Pi – Complete Installation & Configuration Guide

Flash Raspberry Pi OS:

    • Use Raspberry Pi Imager to install Raspberry Pi OS.

    • Enable SSH and Wi-Fi in advanced settings (optional but useful).

First Boot:

    • Insert the microSD, power up your Pi, and complete the OS setup.

Update your system:

bash
sudo apt update && sudo apt full-upgrade -y
sudo reboot

Install RetroArch

There are two main options to install RetroArch:

Option A: Install via RetroPie (Recommended for Ease + Full Emulation Suite)

RetroPie bundles RetroArch + EmulationStation and makes configuration easier.

  1. Install Git:

    bash
    sudo apt install git -y
  2. Clone and install RetroPie:

    bash
    git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
    cd RetroPie-Setup
    chmod +x retropie_setup.sh
    sudo ./retropie_setup.sh
  3. Choose:

    • Basic Install – installs RetroArch, EmulationStation, and core scripts.

  4. After install, reboot:

    bash
    sudo reboot

Option B: Install RetroArch Standalone from Source

If you want only RetroArch:

  1. Install dependencies:

    bash
    sudo apt install build-essential git libasound2-dev libudev-dev libsdl2-dev libv4l-dev \
    libxkbcommon-dev libdrm-dev libgbm-dev libpulse-dev libx11-dev libegl1-mesa-dev \
    libxrandr-dev libxi-dev libgl1-mesa-dev -y
  2. Clone RetroArch:

    bash
    git clone https://github.com/libretro/RetroArch.git
    cd RetroArch
    ./configure
    make -j$(nproc)
    sudo make install
  3. Launch RetroArch:

    bash
    retroarch

 You’ll need to install and manage cores and frontends manually if you choose Option B.

Step 3: Install Emulator Cores

From within RetroArch:

  1. Launch RetroArch:

    bash
    retroarch
  2. Navigate to:

    • Main Menu > Online Updater > Core Downloader

    • Select and download cores (emulators) such as:

      • NES: FCEUmm, Nestopia

      • SNES: SNES9x

      • GBA: mGBA

      • PS1: PCSX ReARMed (best for Raspberry Pi)

Step 4: Add ROMs

  1. Create ROM folders:

    bash
    mkdir -p ~/RetroPie/roms/nes
    mkdir -p ~/RetroPie/roms/snes
    mkdir -p ~/RetroPie/roms/psx
  2. Transfer ROMs:

    • Use SFTP (via FileZilla) or USB stick.

    • File path: ~/RetroPie/roms/[system]

Legal Note: Only use ROMs you legally own.

Step 5: Configure Controllers

Auto-Configuration:

  • On first launch, RetroArch will detect most gamepads.

  • Follow the on-screen prompts to map buttons.

Manual Configuration:

  • Main Menu > Settings > Input > Port 1 Binds

  • Save autoconfig:

    • Input > Save Autoconfig

Step 6: Enable Video and Shaders

  1. Settings > Video:

    • Enable Threaded Video

    • Set Scaling > Aspect Ratio to Core Provided or 4:3

  2. Shaders (for CRT filters):

    • Settings > Shaders > Load Shader Preset

    • Try crt-pi.glslp or crt-geom.glslp

Step 7: Save Configurations

Make sure to save settings:

bash
Settings > Configuration File > Save Current Configuration

Or save per-core config:

bash
Quick Menu > Overrides > Save Core Overrides

Step 8: Autostart RetroArch

To launch RetroArch on boot:

bash
nano ~/.bashrc

Add at the end:

bash
if [ $(tty) = "/dev/tty1" ]; then
retroarch
fi

Or use EmulationStation (from RetroPie) as the frontend.

Optional Enhancements

Add Hotkeys

  • Assign a “Hotkey Enable” button (e.g., Select)

  • Combine with:

    • Hotkey + Start = Exit

    • Hotkey + R = Reset

RetroAchievements

Overclock (Advanced)

  • Use raspi-config > Overclock

  • Improves performance but watch temps.

[mai mult...]

What is Bazzite and why i should install it as a gaming OS

Bazzite is a customized, gaming-focused variant of Fedora Atomic Desktops (specifically Kinoite), developed by the open-source team at Universal Blue. It is designed to deliver an optimized out-of-the-box gaming experience for both desktop PCs and handheld devices like the Steam Deck.

Create a Bootable USB Drive
Use a tool like:

Rufus (Windows)

dd (Linux/macOS)

balenaEtcher (Cross-platform)

Example with dd:

bash
Copy
Edit
sudo dd if=bazzite-xyz.iso of=/dev/sdX bs=4M status=progress && sync
Replace /dev/sdX with the path to your USB stick.

Boot and Install

  • Boot from the USB stick (adjust BIOS boot order if needed).
  • Bazzite will boot into a live environment.
  • Follow the Anaconda installer process:
  • Choose language, disk, and partitions.
  • Set up a user and password.

Install.

Warning: This will overwrite your target drive unless you’re dual-booting. Backup important data.

Post-Install Configuration
Once installed and rebooted into Bazzite:

1. First Boot Tasks
Log into your user account.

Perform initial update (if prompted) via GNOME Software or CLI.

bash
Copy
Edit
rpm-ostree upgrade
2. Steam Setup
Steam is preinstalled, but you can:

Log in to your account.

Enable Proton Experimental in settings for broader compatibility.

Add non-Steam games via Lutris/Bottles (already installed).

3. System Management Tools
Flatpak is your default app store:

bash
Copy
Edit
flatpak install flathub com.discordapp.Discord
Nix Package Manager is also supported (optional but powerful):

bash
Copy
Edit
curl -L https://nixos.org/nix/install | sh
4. Rebase to Another Variant (Optional)
Want to switch between KDE, GNOME, etc.?

bash
Copy
Edit
rpm-ostree rebase ostree-unverified:ghcr.io/ublue-os/bazzite-gnome:latest
Then reboot:

bash
Copy
Edit
systemctl reboot

Useful Bazzite CLI Commands
Command Description
rpm-ostree upgrade Check for and apply system updates
rpm-ostree install <pkg> Layer in additional RPM packages
rpm-ostree status View deployment status
rpm-ostree rollback Roll back to previous working deployment
flatpak install <app> Install Flatpak apps
bazzite-device-setup (Steam Deck) Reconfigures device-specific tweaks.

[mai mult...]