diff --git a/docs/getting-started.md b/docs/getting-started.md
index a022e81b..a7512dc5 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -87,7 +87,10 @@ if you do not want to lose them!
Now it's time to write the image to the card.
-1. Download and install Etcher from [their website](https://etcher.io).
+1. Download and install [Etcher v17](https://github.com/balena-io/etcher/releases/tag/v1.17.0)
+
+ **Newer versions are broken and don't work with the ev3dev image!**
+
2. Launch Etcher after it has finished installing.
{% include /util/screenshot.html source="/images/etcher/home.png" caption="Etcher home screen" width="600px" %}
@@ -244,6 +247,7 @@ available hardware.
{% include /style/begin-section.html %}
+
## Step 6: Connect to the EV3 via SSH
Now that you have a network connection, you should connect to your EV3 with SSH.
@@ -272,6 +276,18 @@ you're good to go!
{% include /style/begin-section.html bg="dark" %}
+## Step 6.1: Optional: Update `apt`
+
+Currently, the image file downloaded from step 1 was built in 2020.
+`apt` does not work out of the box.
+
+To fix `apt` in general, `/etc/apt/sources.list` needs to be changed to match [this file][SourcesList]
+
+Specifically, you can run `sudo nano /etc/apt/sources.list`,
+delete the old content from that file,
+and replace them with the content from the link above.
+
+
## Step 7: Choose a programming language and write some code
{% include /style/icon.html type="info" %}
@@ -290,5 +306,5 @@ favorite language is probably supported. Pick your language and write some code!
[microSD]: https://en.wikipedia.org/wiki/Secure_Digital#SD
[microSDHC]: https://en.wikipedia.org/wiki/Secure_Digital#SDHC
[microSDXC]: https://en.wikipedia.org/wiki/Secure_Digital#SDXC
+[SourcesList]: https://github.com/ev3dev/docker-library/blob/master/ev3dev-stretch/layers/debian/etc/apt/sources.list
[releases]:https://github.com/ev3dev/ev3dev/releases
-[nightly]:https://ev3dev.jfrog.io/artifactory/snapshots/
diff --git a/docs/kernel-hackers-notebook/ev3-eeprom.md b/docs/kernel-hackers-notebook/ev3-eeprom.md
index e96b0977..7ea5acb5 100644
--- a/docs/kernel-hackers-notebook/ev3-eeprom.md
+++ b/docs/kernel-hackers-notebook/ev3-eeprom.md
@@ -48,7 +48,7 @@ If you have a serial terminal connected to Input Port 1, you will see the follow
Jumping to entry point at: 0xC1080000
-NOTE: You can enter firmware update mode by writing 0x5555AAAA to memory address 0xFFFF1FFA (part of the 128K on-chip ram of the AM1808 processor) and then rebooting with `reboot -d -f -i`. This reboots without properly shutting down (see `reboot --help`), so we don't want to do this in ev3dev. On the official LEGO firmware, the firmware update writes over everything so it doesn't matter if it does not shut down properly.
+NOTE: You can enter firmware update mode by writing 0x5555AAAA to memory address 0xFFFF1FFC (part of the 128K on-chip ram of the AM1808 processor) and then rebooting with `reboot -d -f -i`. This reboots without properly shutting down (see `reboot --help`), so we don't want to do this in ev3dev. On the official LEGO firmware, the firmware update writes over everything so it doesn't matter if it does not shut down properly.
## Hardware Version
diff --git a/docs/programming-languages.md b/docs/programming-languages.md
index c46bdd8a..1d38837a 100644
--- a/docs/programming-languages.md
+++ b/docs/programming-languages.md
@@ -50,12 +50,28 @@ This brings some advantages, like programs starting significantly faster than
regular Python, but comes at the cost at not being fully compatible with code
written for regular Python.
+MicroPython works as a different Python interpreter, rather than as a library.
+It can be invoked by running it from the command line, for example:
+`micropython -c "import sys; print(sys.version)"` or
+`micropython -c "from ev3dev2.sound import Sound; Sound().speak('hello world')"`.
+You may add this as the first line of your Python script to run it with MicroPython:
+`#!/usr/bin/env micropython`.
+
+**TIP:** `ev3dev-lang-python` is also partially compatible with MicroPython.
+
[Pybricks] is a specialized version of MicroPython for LEGO MINDSTORMS and LEGO
Powered Up smart hubs. Pybricks v2.0 is used by LEGO Education as their [Python
for EV3](https://education.lego.com/en-us/product-resources/mindstorms-ev3/teacher-resources/python-for-ev3)
solution and is the same version that is available in ev3dev-stretch.
-**TIP:** `ev3dev-lang-python` is also partially compatible with MicroPython.
+You may run Pybricks from command line like this:
+`brickrun -r -- pybricks-micropython -c "from pybricks.hubs import EV3Brick; EV3Brick().speaker.beep()"`.
+You may add this as the first line of your Python script,
+`#!/usr/bin/env pybricks-micropython`,
+and then run it from the brick's file browser to run it with Pybricks.
+
+**TIP:** If you are into using Python's interactive mode when trying Pybricks,
+you can use `brickrun -r -- pybricks-micropython`, or its shortcut `pybricks-repl`.
[Get started with MicroPython](https://pybricks.github.io/ev3-micropython/){: .btn .btn-default }
diff --git a/downloads.md b/downloads.md
index 2f1d28c3..e4a88695 100644
--- a/downloads.md
+++ b/downloads.md
@@ -142,21 +142,6 @@ redirect_from: /download/
-
-
Snapshot Releases
-
- We occasionally build images for testing purposes. These images
- are published without any prior testing and there are no release
- notes. However, you might be interested in these images if you
- want to try out the latest new features and bug fixes.
-
-
-
Previous Releases
diff --git a/index.md b/index.md
index 0c822cd7..218a2e5e 100644
--- a/index.md
+++ b/index.md
@@ -34,7 +34,7 @@ jumbotron-content: |
ev3dev is a Debian Linux-based
operating system that runs on several LEGO® MINDSTORMS compatible
- platforms including the LEGO® MINDSTORMS EV3
+ platforms including the LEGO® MINDSTORMS EV3
and Raspberry Pi-powered
BrickPi.
diff --git a/projects/_posts/2016-08-07-Mapping.md b/projects/_posts/2016-08-07-Mapping.md
index 865762a1..765a55b4 100644
--- a/projects/_posts/2016-08-07-Mapping.md
+++ b/projects/_posts/2016-08-07-Mapping.md
@@ -38,6 +38,10 @@ The meta-repository of the project is [ev3dev-mapping].
This is my personal project. While I am quite happy to share the results, please keep in mind that I am pursuing my own goals here.
+
+{% include /style/icon.html type="info" %}
+Some of the generic [libraries](https://github.com/bmegli/wifi-scan) written for this project [ended up](https://github.com/nasa/isaac/blob/3a7bdcae46e255cb9060a80f1a6e70af187f631c/astrobee/hardware/wifi/include/wifi/wifi.h#L2) in NASA ISAAC flight [software](https://nasa.github.io/isaac/html/wifi_driver.html) for Astrobee robot operating inside the International Space Station. That's some open source in the wild!
+
## Examples
@@ -157,7 +161,9 @@ The position and heading data is interpolated individually for each laser readin
The `drive component` translates input from the user (keyboard, pad, numerical, ...) using the motion model and sends it to the `drive module`.
The `drive module` controls the motors.
-The `control component` and the `control module` are not in the scheme for clarity. The `control component` sends to `control module` requests to enable/disable modules.
+The `wifi component` and the `wifi module` are not in the scheme for clarity. The `wifi module` sends wireless signal strength information to the `wifi component`. The data is reflected in the UI.
+
+The `control component` and the `control module` are not in the scheme for clarity. The `control component` sends to the `control module` requests to enable/disable modules.
The `control module` replies with module states.
## Building Instructions
@@ -212,6 +218,8 @@ If you have some question or problem open an issue in one of the [ev3dev-mapping
[mi-xg1300l] - CruizCore XG1300L driver documentation
+[wifi-scan] - C/C++ library for monitoring signal strength of WiFi networks
+
[X3DOM] - open-source framework for declarative 3D graphics on the Web
### tutorials and learning
@@ -265,6 +273,7 @@ If you have some question or problem open an issue in one of the [ev3dev-mapping
[xv11lidar]: https://github.com/bmegli/xv11lidar
[mi-xg1300l]: https://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-jessie/sensor_data.html#mi-xg1300l
+[wifi-scan]: https://github.com/bmegli/wifi-scan
[How to interface XV11 LIDAR to EV3 using ev3dev]: https://www.youtube.com/watch?v=G6uVg34VzHw
[EV3 Gyro vs CruizCore XG1300L vs Odometry - Position Estimation]: https://www.youtube.com/watch?v=vzND_ISdhEs
diff --git a/projects/_posts/2023-11-16-Ev3-Doom-port.md b/projects/_posts/2023-11-16-Ev3-Doom-port.md
new file mode 100644
index 00000000..e52b2276
--- /dev/null
+++ b/projects/_posts/2023-11-16-Ev3-Doom-port.md
@@ -0,0 +1,35 @@
+---
+# Fill out as many of these as you can, and delete the rest.
+# Text on a line after a "#" is a comment and is ignored for the published page.
+
+author: [ "@Seva167" ] # your GitHub user name
+
+programming_language: "C" # The programming language used in this project
+
+youtube_video_id: 34S983xN5W8 # The video ID of the YouTube video to be displayed with this post
+# thumbnail_override: "/images/projects/my-project/my-image.png" # If you don't have a YouTube video (or the video thumbnail isn't good) you can uncomment this line to set your own image for the project.
+
+# project_homepage_url: "http://example.com/my-super-cool-project" # Homepage for this project
+source_code_url: "https://github.com/Seva167/ev3doom" # Provide a link to your code
+# building_instructions_url: "http://example.com/building-instructions.pdf" # how to build the model out of LEGO (*not* how to build the source code)
+
+excerpt: "A 1993 game classic powered by your robots."
+---
+
+**A complete port of Doom engine for EV3. Works very well for this hardware.**
+
+Code on [Github](https://github.com/Seva167/ev3doom)
+
+
+
+- Fully compatible with the original Doom
+- Uses dithering for better graphics
+- Music and sound are working (if you compile it with sound support)
+
+You can download precompiled binary on [releases](https://github.com/Seva167/ev3doom/releases/latest) page
+
+Port is based on [Doomgeneric](https://github.com/ozkl/doomgeneric)
+
+For help create an issue on [github](https://github.com/Seva167/ev3doom/issues)
+
+Enjoy!
diff --git a/projects/_posts/2024-02-20-evdrive.md b/projects/_posts/2024-02-20-evdrive.md
new file mode 100644
index 00000000..7eaee7f5
--- /dev/null
+++ b/projects/_posts/2024-02-20-evdrive.md
@@ -0,0 +1,26 @@
+---
+# Fill out as many of these as you can, and delete the rest.
+# Text on a line after a "#" is a comment and is ignored for the published page.
+
+author: [ "@xgames123" ] # your GitHub user name
+# or make a list if there is more than one author
+# author: [ "@person1", "@person2", "person without GitHub account" ]
+
+programming_language: "python" # The programming language used in this project
+
+youtube_video_id: g0dI3Tlzhqg # The video ID of the YouTube video to be displayed with this post
+# thumbnail_override: "/images/projects/my-project/my-image.png" # If you don't have a YouTube video (or the video thumbnail isn't good) you can uncomment this line to set your own image for the project.
+
+# project_homepage_url: "https://github.com/Xgames123/evdrive" # Homepage for this project
+source_code_url: "https://github.com/Xgames123/evdrive" # Provide a link to your code
+# building_instructions_url: "http://example.com/building-instructions.pdf" # how to build the model out of LEGO (*not* how to build the source code)
+
+excerpt: "steering wheel + pedals made with lego ev3" # A short summary of your project. This can be a sentence or a paragraph, but it's recommended to keep it under 3 sentences.
+---
+**Steering wheel + pedals made with lego ev3.**
+
+Code and build instructions on [github](https://github.com/Xgames123/evdrive)
+
+## Known Issues
+- It simulates an xbox controller so It probably won't work on some driving games that don't support controllers
+- Force feedback doesn't work yet
diff --git a/projects/_posts/2024-11-15-EV3-Segway-NodeRED-Beacon.md b/projects/_posts/2024-11-15-EV3-Segway-NodeRED-Beacon.md
new file mode 100644
index 00000000..670cb238
--- /dev/null
+++ b/projects/_posts/2024-11-15-EV3-Segway-NodeRED-Beacon.md
@@ -0,0 +1,23 @@
+---
+# Fill out as many of these as you can, and delete the rest.
+# Text on a line after a "#" is a comment and is ignored for the published page.
+
+author: [ "@TheNoobInventor" ] # your GitHub user name
+# or make a list if there is more than one author
+# author: [ "@person1", "@person2", "person without GitHub account" ]
+
+programming_language: "MicroPython" # The programming language used in this project
+
+youtube_video_id: rd8de9ClbUM # The video ID of the YouTube video to be displayed with this post
+# thumbnail_override: "/images/projects/my-project/my-image.png" # If you don't have a YouTube video (or the video thumbnail isn't good) you can uncomment this line to set your own image for the project.
+
+source_code_url: "https://github.com/TheNoobInventor/lego-ev3-segway" # Provide a link to your code
+building_instructions_url: "https://robotsquare.com/2014/06/23/tutorial-building-balanc3r/" # how to build the model out of LEGO (*not* how to build the source code)
+
+excerpt: "A segway robot is built with the LEGO MINDSTORMS EV3 robot kit and the EV3 Gyro sensor. " # A short summary of your project. This can be a sentence or a paragraph, but it's recommended to keep it under 3 sentences.
+---
+The self-balancing code is written in MicroPython using EV3 MicroPython which runs on top of the ev3dev Operating System (OS). The robot can be controlled using Node-RED through MQTT or with the EV3 infrared beacon.
+
+- **Name:** Chinedu Amadi
+- **Location:** Nigeria
+- **Feedback:** You can create an [issue](https://github.com/TheNoobInventor/lego-ev3-segway/issues) in the project repository.
diff --git a/projects/_posts/2025-05-26-EV3Aero.md b/projects/_posts/2025-05-26-EV3Aero.md
new file mode 100644
index 00000000..2d071129
--- /dev/null
+++ b/projects/_posts/2025-05-26-EV3Aero.md
@@ -0,0 +1,27 @@
+---
+title: EV3Aero
+author: ["@Slashingbee"]
+programming_language: Python
+project_homepage_url: https://github.com/Slashingbee/EV3Aero
+source_code_url: https://github.com/Slashingbee/EV3Aero
+building_instructions_url: https://github.com/Slashingbee/EV3Aero#installation
+youtube_video_id: 6nR1NGUVFuk
+excerpt: Modular flight controller for LEGO Mindstorms EV3 running ev3dev. Build custom flight simulator controllers using LEGO motors and sensors.
+---
+
+EV3Aero is an open-source project that allows you to build a modular flight controller using LEGO Mindstorms EV3 running ev3dev. The system enables creating joysticks, throttles, and other flight controls compatible with flight simulators.
+
+## Features
+
+- Modular design allowing flexible hardware customization.
+- Uses LEGO motors and sensors for unique, customizable controllers.
+- Compatible with various flight simulators.
+- Open source under the Apache-2.0 license.
+
+## Installation and Usage
+
+Detailed installation and setup instructions are available in the [README](https://github.com/Slashingbee/EV3Aero#installation).
+
+---
+
+Feel free to contribute, test, and develop new features for the project!
diff --git a/projects/_posts/2025-08-11-ev3-MQTT-ROS.md b/projects/_posts/2025-08-11-ev3-MQTT-ROS.md
new file mode 100644
index 00000000..a9cbc0a8
--- /dev/null
+++ b/projects/_posts/2025-08-11-ev3-MQTT-ROS.md
@@ -0,0 +1,48 @@
+---
+title: "ev3 mqtt ROS"
+author: ["@JSDaleman"]
+programming_language: Python
+project_homepage_url: https://github.com/JSDaleman/ev3_mqtt_ros/blob/main/README_EN.md
+source_code_url: https://github.com/JSDaleman/ev3_mqtt_ros
+building_instructions_url: https://github.com/JSDaleman/ev3_mqtt_ros/blob/main/README_EN.md#%EF%B8%8F-lego-ev3-connection-with-ros
+youtube_video_id: NIEbXVXS-eo
+excerpt: This project controls a LEGO EV3 gyro-sensor driving base via ROS and MQTT, enabling remote teleoperation and simulation in RViz/Gazebo.
+---
+
+# 🤖 ev3_mqtt_ros
+
+[](https://www.python.org/)
+[](https://www.ros.org/)
+[](https://mqtt.org/)
+[](https://www.lego.com/en-us/themes/mindstorms)
+[](LICENSE)
+
+🚀 **Learn, build, and control!**
+This project is designed for students, researchers, and robotics enthusiasts who want to explore mobile robot teleoperation using real hardware and industry-standard tools. By combining **ROS**, **MQTT**, and **LEGO EV3**, it offers a practical way to understand robotics concepts, sensor integration, and simulation—all in one package.
+
+---
+
+## 📚 About the Project
+
+Hi, my name is **Juan Sebastián Daleman**. I am a graduate student at **Universidad Nacional de Colombia**, based in Bogotá D.C., Colombia.
+This project was developed as part of the *Fundamentals of Mobile Robotics* postgraduate course, within the [Labsir](https://github.com/labsir-un) research group. It is an open-source initiative aimed at exploring mobile robotics using professional tools such as **ROS** to control and process various sensors, while also simulating robot behavior in a virtual environment.
+
+---
+
+## ✨ Features
+
+- 💻 **Cross-platform compatibility**: Works on Linux (native), Windows via WSL, or Raspberry Pi.
+- 📡 **Sensor integration**: Supports the LEGO EV3 gyro sensor, with potential for ultrasonic, color, and touch sensors.
+- 🎮 **Custom teleoperation interface**: Control the robot using a keyboard, joystick, or GUI via rqt plugin.
+- 🔗 **MQTT broker flexibility**: Compatible with HiveMQ, Mosquitto, or local MQTT brokers.
+- 🖥 **Simulation and visualization**: Full support for RViz and Gazebo with 3D robot models.
+- ⚡ **QoS and latency optimization**: Adjustable MQTT Quality of Service and network tuning for low-latency control.
+- 🛠 **Extensibility**: Modular ROS node structure to easily add new sensors, actuators, or behaviors.
+- 🎓 **Educational focus**: Designed for learning ROS, MQTT, and robotics in academic or hobbyist contexts.
+- 📊 **Logging and monitoring**: Record and review robot data using rosbag or MQTT logs.
+- 🌐 **Remote deployment**: Send and run code on the EV3 over SSH without a physical connection.
+
+
+## 📬 Contact
+If you would like to contact me, please email **juan@sebastiandaleman.com**.
+For comments or questions, feel free to create an [issue](https://github.com/JSDaleman/ev3_mqtt_ros/issues) in the repository.