Posts

Hacking My Mazda Infotainment - MZD-AIO and CASDK

Image
How Does the 2014-2019 Mazda Connect Infotainment Work? The infotainment system in my 2015 Mazda 3 is incredibly strange. The entire infotainment "operating system" that you see is nothing more than the Opera web browser showing regular old HTML, JS, and CSS web pages. As strange as this solution is, this offers amazing possibilities that most other car infotainment systems don't allow for. Unlike my old Audi running QNX or something equally strange, the Mazda runs a regular version of Linux with a very normal web browser. In fact, it has become even easier to work with in recent year, due to the abundance of Arm-based phones and laptops, just like the Arm CPU in the Mazda Infotainment.  The infotainment system was made by a company called Johnson Controls International, or JCI rather than being made in-house by Mazda. JCI left a lot of development and debugging features even in the final versions of the OS that went out to consumer cars. A Brief History of Hacking the Ma

DRTuned - Tuning My Car With My Steam Deck

Image
Tuning Your Car I own a 2015 Mazda 3. It's far from the fastest car on the road, and after owning a modified Audi A4, and driving some other fun and fast cars, every time I go back to it it feels like a bit of a downgrade (save for the reliability!). After the reliability nightmare that my Audi was, I have very little interest in buying a car like that one any time soon despite how fun and fast it was, but wouldn't it be nice if my existing car was a bit speedier?  Enter the world of tuning. A car's tune is basically the software that controls the very low-level portions of the engine. It controls engine timing, air-fuel ratio, and much more. Most car manufacturers make a very safe default, or stock tune for their car. They don't optimize it for each and every single car that rolls off the production line, they make one safe tune and apply it to all of them.  This means that there's generally some room for performance gains on every single stock tune in any car. Add

Homebridge - Making my Home a Little Smarter

Image
  The Goal Ever wish you could remotely control every light in your house? Control a PS3 from your iPhone? Create schedules to automatically turn on and off devices in your house in the most complex way possible? No? Hmmm.  It's a little more useful than that I promise. I was introduced to the world of Apple Homekit when my dad wanted his espresso machine to start in the morning before he gets out of bed. Nice little quality-of-life thing. But he went further than just a timer, he got an outlet plug that could be controlled by his phone. And I thought that was soooo cool.  We bought some more smart plugs, a smart light switch, and a couple of other things. Pretty cool to have all the lights in a room come on with a single switch, without any complex and annoying-to-undo-later wiring. Also a nice bonus that I could control them without getting up. But smart home equipment is *expensive*. And I already have a server computer. What if some of these devices could be smartified without

1isle - Music on Spotify, Apple Music, Etc.

Image
  What is 1isle? Back in early 2020, pre-pandemic and all of that, I had been making music with one of my close friends for several years, and we got curious about what it really takes to put music on Spotify. We found out that if you're willing to let a distributor take a cut of the profit, you can even upload for free. Otherwise, you can also find a distributor where you pay a $20 fee and they take no cut of the profit. Given that we expected to make basically no money off of this, we chose the free route.  We started assembling songs, making album art, artist icons, social media accounts, and so much more. We chose our name a little randomly, we were playing around with a band name generator, and one of the generated names got messed up. They weren't supposed to include numbers or special characters. Thinking that was kind of funny, we stuck with it. Also it sounded kinda cool to us at the time.  Making the Music The two of us had been making music for years and years. At le

SNES Starfox - Remake in Unity

Image
  The Game Why We Made It In the CS Projects class at my high school, we were given a challenge: create a vertical slice of a game from the SNES era.  I was in a group with my fellow student Tobin ( GitHub here ), and while we could have absolutely chosen something simpler, like one of the various 2D platformers of the time, we decided to recreate what was the most graphically complex game for the SNES, with 3D.  Now while a game like this might've been challenging to develop back when StarFox for the SNES was created, it's quite simple in the present day. Make or grab some models you can find, make an infinite scrolling backdrop with some obstacles, create a flying ship, add a couple enemies, add weapons, and the game is mostly complete! We made this game in about a week. It's simple, but it's fun to play around with. The Project You can find the Unity project on GitHub here . Play the Game Play it fullscreen here .

Doom on a Drone Controller

Image
  Back in 2018 I bought a terrible drone manufactured by GoPro, called the "GoPro Karma." The idea behind it was really clever, a drone that worked with the GoPro ecosystem you have already been purchasing from over the years. Slap a camera you already own into a drone, fly it, and when you get back, you can remove the gimbal from the drone and use it handheld.  Truly a good idea, but it felt a little hacked together on the software side. The GoPro didn't always want to enter the drone mode, the controller refused to connect to Google WiFi networks, etc. My favorite part, is the controller actually runs Android, and the software for controlling the drone is just an Android launcher and app.  What I Did In 2021, 3 years after the GoPro Karma was discontinued, a youtuber found out you could install a different version of Android to the controller . There was a hidden recovery/reflash mode on the controller, accessible via a button combination, and with a custom driver on th

The Nautilus - A Group Project

Image
  The Game The Nautilus is a game a friend of mine, Eden (found here on GitHub), started back over a year ago. It's gone through many revisions, eventually winding up as a web-based game that involves controlling a spaceship, navigating obstacles, and avoiding enemies.  Features Contains custom audio, perfectly looping music and background sounds, visual effects, a momentum storing and releasing mechanic, and more. Playable with WASD for movement, and the space bar to store, then subsequently release your momentum later for ultimate speed control.  The Project The source code can be found on GtiHub here , and is playable at the following link:  https://eden-annora.github.io/TheNautilus/ . Have fun! Please star the project, and report issues if you find some. Note that the game is early in development, so there will be some bugs.

Ultimate Tic Tac Toe - A Group Project

Image
The Game Making It By now,  I'm certain you're aware of how to play tic tac toe. But what if, every single one of those 9 squares, was another tic tac toe game? Also, depending on where you last played, you can only play in that same square in the big full-size game. This is a project my friend (found on github at AlteredNode ) was working on, that I got involved in. Together, we built a game that was simple enough to make, but entertaining enough to keep a group focused for a while. We ported it to Windows, Mac,  Android, and iOS, though it is not in any of the app stores yet. It still has to be sideloaded for now.  The Project You can find the source code for the Unity project here , the XCode project for porting to iOS here , and download the game here . Play the Game Play it fullscreen here .

Videopaks for the OP-Z

Image
Background In 2020, slightly before the pandemic, I purchased a small synthesizer called the OP-Z, manufactured by Teenage Engineering . It's little gray rectangle, about the size of a tv remote, with full synthesizer and sampler capabilities. It's a very nice, capable little device, but it lacks a screen, or any kind of display save for a bunch of RGB LEDS inside most of the buttons. Now, no display whatsoever is a little tricky on such a complicated device, so the solution to this was to use your phone or tablet as a display to show what's going on inside the synthesizer. The best part, is the app allows you to create your own visuals to sync up with your music. What I Made I'm not the best artist out there, so I looked for how to make a tool rather than just art with this platform called "Videolab." I wound up creating two different tools. The first one was a spinning drum, where each note you play on the synthesizer would create a ball, playing a sound eac

Raspberry Pi Spotify Status - The Sequel

Image
 Background Around a year ago, I set up a Raspberry Pi with a screen to show my Spotify status using a project on Github called " Nowify ." While this is an excellent project and worked well for most of my needs, I simply did not know how it was set up, as I was modifying someone else's project rather than just making my own. While possible, it became quite tricky to look through the project and add features according to my needs (automatic screen on/off, fixed scaling at small screen sizes, etc.) because I simply had no idea how the project had been put together. CS50 Over summer break and into the school year, I had been taking Harvard's free CS50 course, learning C, Python, and eventually HTML and CSS. For the final project for the course, I took a crack at recreating my favorite parts of Nowify, but with a few modifications to fit my needs. I was using my new knowledge of web app development, and hosting Python web apps with Flask, and got a rough demo together pr

Installing CarPlay in an 11-year-old Audi

Image
Required Parts and Prior Info A few months ago, I purchased a used 2011 Audi A4 with a manual transmission (that'll be important later!). While the built-in navigation wasn't too bad for being 11 years out-of-date, it's still hard to call it great. I wanted current features like traffic reports and knowledge of construction and closed-off roads, which the Audi MMI system couldn't provide. While I could replace the entire infotainment, the existing system offers settings for the entire car and a reverse camera, which I didn't want to give up. What I Purchased and Installation To solve this problem of integration with the existing car infotainment, I bought a Carlinkit retrofit kit for my car. It's essentially an additional computer that uses the DVD player's video feed to the screen as well as power from the climate control to run CarPlay itself. I follow this guide  to install it. Connecting all the cables was pretty easy, the only challenge was finding a p

Using the Steam Deck as a Controller for my Gaming PC

Image
The Goal and Brief Overview  I've seen that a couple of people online want to use the Steam Deck as a controller for their pc, kind of in the way that the Wii U gamepad controlled the Wii U console. Valve does suggest how to do this here , but without much detail. The best way I found to  do this was actually not through the Steam Deck's native streaming system, but instead by downloading Steam Link through the Discover app. Doing this instead gives us some extra settings. Using the built-in streaming, you get full remote play, showing the computer screen on the Deck, playing audio out of the Deck, etc. Perfect for if you're out of the house, however, when I'm still sitting at my desk in front of my PC, I don't really need my game controller playing noises or showing my monitor screen, and Steam Link lets you disable that. Also, using Steam Link rather than the built-in streaming system would allow you to close and relaunch any game without stopping streaming, choos

Raspberry Pi Spotify Display - Auto Screen Control!

Image
Project continues here:  https://blog.romangarms.com/2023/03/raspberry-pi-spotify-status-sequel.html What's new? A minor update, but now the Nowify Spotify display can turn on and off the Raspberry Pi's screen! The Java webserver ( GitHub link here ) can now get requests directly from my tweaked version of Nowify ( GitHub link here ).  How does it work? The webserver (hosted on the Raspberry Pi itself) looks for pings on either "localhost:9000/TurnOnScreen" or "localhost:9000/TurnOffScreen" to then send a vcgencmd command to turn the display on or off. My version of Nowify sends an HTTP get request to the "TurnOnScreen" URL when music begins playing, and sends a different HTTP request to the "TurnOffScreen" URL when music stops. Very basic, but it works quite nicely. Next Steps I'd like to prevent the TurnOffScreen request from being instant. I still have a "no music is currently playing" page, I don't want it to entirel

Raspberry Pi Spotify Display - Nowify, Homebridge, and More!

Image
Project continues here: https://blog.romangarms.com/2022/06/raspberry-pi-spotify-display-auto.html Setup A while ago, I set up a Raspberry Pi 3B and cheap touchscreen display to show the song I'm currently listening to on Spotify. I did this by installing Raspbian, and then running Jon Ashcroft's Nowify  on the display, albeit with some slight modifications. I customized a couple of things. One, the "no music is currently playing" screen is now black, and less attention-grabby. Secondly, the font size got bumped up a little (a requirement for this tiny 7" screen, but still not enough!).  I also added one other helpful feature, though this one isn't a part of the Nowify site. I added integration with Apple Homekit through  Homebridge , which allows me to remotely turn on and off the display from my phone. Hitting buttons on my phone sends a signal to my computer hosting the Homebridge server, which sends a command over SSH to the Raspberry Pi to enable or disa