It seems like I’m in a constant state of switching between Windows 10 and Linux on my personal laptop, so I keep both environments available in a dual boot. I’ve really enjoyed using WSL2 on my Windows 10 side, so much so that I have a bunch of projects that are in active use within that environment.
WSL2 uses a lightweight virtual machine to boot a Linux kernel, and each WSL Linux distribution keeps a complete ext4 Linux filesystem as a virtual hard disk image for faster — and native — file access on your Windows 10 host. Luckily, it’s pretty easy to mount this filesystem if you’re booted on the Linux side.
I’m using Windows 10 2004 and Pop_OS! 20.04, but this process will work with any Linux distribution that is set up to mount NTFS partitions read/write using ntfs-3g and can install the guestmount utility via libguestfs.
To do this, the Windows 10 disk will need to be mounted within your Linux environment. On my Linux installation, I mount my Windows 10 volume using ntfs-3g under /mnt/c.
You will need to find your root virtual disk, which is located in the application package directory of the WSL Linux distribution being used. In Windows, this follows the pattern “C:\Users\username\AppData\Local\Packages\distribution\LocalState\ext4.vhdx”, where C is your drive letter, username is your Windows username, and distribution is the generated name of the distribution used. If one is using Ubuntu, the generated name is “CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc“. I’m going to use this path in the example below.
The other tool we’ll need is guestmount. This can be installed on Debian/Ubuntu/derivatives by installing the libguestfs-tools package using APT.
sudo apt install libguestfs-tools
Now, let’s mount the partition. The mount points in the image do not like being mounted as a normal user, and I’m happy to hear suggestions on how to get around this. We’re using the allow_other flag to let other users have access to the filesystem, and mounting it under /mnt/wsl. You can alter the username, distribution, and mount point to match your system.
Your WSL2 distribution is now available under /mnt/wsl. I haven’t found any odd side effects, except that Visual Studio Code reminds you to install the Remote – WSL extension, as WSL is available on your system. Go figure. 🙂
Remember to use guestunmount when complete, before the Windows filesystem is unmounted. Too many force unmounts will eventually cause problems with the WSL2 environment, and there isn’t a lot of self-healing available.
I recently had to do some spelunking into a long-updated AMI image to move it over to automated builds. The AMI had been updated over the period of a few years with security updates, OS patches, configurations, and more, and very little documentation was generated on those changes, as organic growth tends to do. I wanted the opportunity to poke at it over time, but didn’t necessarily want to burn the compute time in EC2 to maintain the instance, so I wanted to get it booting locally.
Of course, Amazon does not let you download AMIs unless you had them built and uploaded in the first place.
In this example, I’m using Linux to create disk images, and I’m running the resulting image in Hyper-V on Windows 10. Some commands can be altered to work with other environments.
Start a new instance with the AMI you’d like to work with. When creating the storage, uncheck delete on termination.
Once created, terminate the instance, it isn’t needed anymore.
Create a new, nano Linux instance with default settings.
Within Volumes, attach the volume from your first instance to the new Linux instance.
Create or identify an S3 bucket to store your image to, and make sure the instance profile of the Linux EC2 instance can access that S3 bucket.
SSH into the Linux machine, and open a screen or tmux instance to shield you from disconnections.
Identify the device node of the new image. You can dmesg | tail or look in /dev/nvme* for new matching, unmounted nodes.
Now we image that device directly to S3. Replace /dev/nvme1n1 with the device you found, and your_bucket_name with the destination you chose in S3. This command pulls a raw image, compresses it, and transmits it directly to S3: dd if=/dev/nvmen1 - | gzip | aws s3 cp - s3://your_bucket_name/ami-disk-image.img.gz
With that image saved, you may now terminate the Linux EC2 instance you created, and delete the volume.
On your local machine, pull the disk image: aws s3 cp s3://your_bucket_name/ami-disk-image.img.gz .
Use gunzip, 7zip, or WinRAR to gunzip the disk image
Use qemu-img to convert the image to Hyper-V: qemu-img.exe convert ami-disk-image.img -O vhdx -o subformat=dynamic C:\Users\Public\Documents\Hyper-V\ami-disk-image.vhdx
Create a new Hyper-V instance in version 8, with this disk image mounted to IDE
Remove the generated image from S3
Congratulations, you now have your environment in a local VM to play with.
I recently completed an infotainment upgrade on my B8 Audi A5 Cabriolet 2.0T Prestige, bringing it from the stock MMI 3G system to MMI 3G Plus. The updated MMI unit brings an updated interface, speed increase, Audi Connect, online map destinations, Google Earth overlays, bluetooth audio over A2DP, and without any data to back it up, better audio quality.
I did all of this with used parts, which meant a trip to an Audi service center to remove component protection. This amounted to an hour of labor charged, which is still far cheaper than buying any of these parts new. This was done in the US, on a left hand drive model, so other countries may have different part numbers, or may require a reflash — particularly the 5F or 56 modules.
There are a ton of HOWTO guides on the forums, all with slightly different information. I’m adding to the chorus with things I ran into while installing this in an A5 cabriolet, which can be different than those installing in an A4 sedan or Q5 crossover.
Audi Radio Keys: The radio keys are required for removing the original stock MMI unit. They slide into slots on either side and allow the unit to slide out.
Plastic Trim Removal Tools: I used the trim tools for removing the shift boot while removing the MMI control panel, for easing out the temperature control unit, for jimmying apart the plastic pieces behind the screen for snaking through the antenna connector from the top vent down to the 5F unit, and for removing trim pieces during trunk disassembly to install the radio
Torx screwdriver – T25 (radio) and T20 (antenna)
10mm and 13mm sockets and wrench (Radio only)
8R1 035 746 B – MMI Control Unit(5F): This is the brains of the upgrade, powering the user interface, housing the hard disk, DVD drive, and cellular module, and interfacing with CAN and MOST buses. They have revisions all the way up to G, and it looks like F and G have an updated cellular module with UMTS support. These can be sourced from any B8.5 model — A4, S4, RS4, A5, S5, Q5, SQ5.
8T0 919 611 L WFX – MMI Control Panel: This is the tactile interface to MMI in your center console, providing the control knob, and function buttons. This model has the start/stop button, as mine was originally equipped with it, the model without is 8T0 919 611 K WFX. This has to be changed due to the communication speed change between the two models. Though you can use an older control panel with VCDS changes, the updated layout is really nice. These can be sourced from any B8.5 model — A4, S4, RS4, A5, S5, Q5, SQ5.
4G0 035 082 G – Radio (56): This can be optional. Some radio units have difficulties communicating with the updated control unit, and will throw errors or reset itself while operating. Mine was one of them, but it wasn’t a huge deal, but I also wanted HD Radio, so did the upgrade. These can be sourced from a /ton/ of Audi and VAG models.
8K1 820 043 AR – Temperature Control Unit (08): This is absolutely optional, skipping this will still result in a fully functional upgrade. I wanted this for aesthetic reasons — it matches with the new 5F well, and I like the white text and simple ventilation buttons. The model number shown here provides dual zone and heated and vented seat controls. These can be sourced from any B8.5 model — A4, S4, RS4, A5, S5, Q5, SQ5. The Q5/SQ5 models will have an additional plastic strip on the bottom with a foam tape backing. This can be pulled off to fit in the car models.
An external GSM antenna: It appears, according to other guides, that many A4 and A5 models have a built in cellular antenna to connect the new MMI unit to, my cabriolet either didn’t have it, or just wasn’t accessible enough for me to find. I ended up buying an external antenna on eBay with a FAKRA connector to wire into the unit
Ross-Tech HEX-V2 cable and VCDS: VCDS is required for enabling diagnostic mode and coding your new devices. There are other tools that may allow this functionality, and some less than above board options, but these are the tools I used.
Make an appointment at your Audi dealership, or Audi-enabled service center with access to Audi’s service network. The MMI Control Unit, Radio, and Temperature Control Unit will all need to have component protection removed to operate. That means the drive will be without music and without heating or air conditioning, so plan accordingly.
Before getting started, retrieve the current coding and configuration of the installed modules using a combination of VCDS and the “green menu” diagnostic screens of the existing unit.
To enable the “green menu” in VCDS
Open module 5F – Control Head
Select the 10 – Adaptation button
Select Channel 06 and press the Read button
If the value is 0, change to 1 and press the Save button
Exit the module
Reboot the MMI by pressing SETUP + Control Knob + Upper Right button
Once rebooted, go to RADIO, and then hold down SETUP and CAR at the same time to enter the green menu
Grab your phone or digital camera, and start taking shots of some screens in here, as they will need to be duplicated once the new unit is installed. Each of the headings above have subheadings, and then potentially multiple pages of options to scroll through. You will want to capture:
car > carcodingvehicle (1 page)
car > cardevicelist (3 pages)
car > carextdevicelist (1 page)
car > carfunctionlist (1 page)
car > carmenuoperation (3 pages)
Now we want to capture coding in VCDS, but only if replacing the radio or temperature control unit. If not, skip ahead.
Open module 56 – Radio
Select the 07 – Coding option
Take a screenshot or copy the code directly to another file or note taking application
Open module 08 – Auto HVAC
Select the 07 – Coding option
Take a screenshot or copy the code directly to another file or note taking application
MMI GSM Upgrade
I created a bit of a monster for mine. My first MMI Control Unit was a F-model, but a dud. It was sold as a non-working model, and I was hoping it was just a bricked logic board, and I could recover it with a serial cable and a laptop, but it was truly and completely dead. It was in fantastic condition, though, so I kept it around.
My next model was a B model with a carved up fascia. I transplanted the nice fascia from the F-model to make it look great, and then I took the GSM module out of the F-model and placed it in the B-model so I could access UMTS towers. That module just requires the top cover to be unscrewed, and then one screw from the back of the module with the purple connector on the back.
The one hiccup in place is that the upgraded GSM module requires drivers for the control unit. This can be accessed at the Audi dealership under ServiceNet >> AUDI >> Technician References >> Audi MMI Scripts : MMI3GP_UMTS_Driver_Script.zip. I am still working on acquiring this, but everything connects okay at 2G speeds with the old module.
Fitting the MMI Control Unit (5F)
This is actually incredibly easy, but if installing the optional components, I’d almost install it last, as it’s easier to take care of some of the other components while this unit is taken out.
Make sure the vehicle is off, and the parking brake is on
Shift the vehicle into neutral. This gives you more room to slide out the MMI without a fight
Place the two Audi radio removal keys into the two corresponding slots on the unit until they lock into place
Using the keys, slide the unit out from the dashboard
Remove the connectors from the rear of the unit, and the button modules on the front of the unit
Remove the button modules from the control unit. There are four tabs — two visible, two on the top of the module, you can slide a wedge in to release them, and work them out.
Place the button modules in the new unit
Now is a good time to pause until you’re done with everything else.
Reconnect each of the connectors, matching color to color. All of the connectors are the same, but the purple connector will be used by the optional GSM antenna
Slide the unit back into the dashboard
Shift back into Park
Fitting the MMI Control Panel
This one is futzy, but not awful. It’s highly recommended that the HVAC control panel is removed to be able to get this out.
Make sure the vehicle is off, the parking brake is engaged, and the vehicle is in neutral
Grab a plastic wedge tool and insert it to the right of the shift boot, near the bottom, and gently pry it up. The bottom of the boot should pop up slightly, and you can work out the rest of it
Lift the boot up and over the knob to give yourself some room. Don’t try to remove the boot, we’re just creating a little cone.
Pry up the shift indicator (PRNDS) vertically with your hand, and disconnect the cable
Pry up the remainder of the unit from the bottom of the new hole you’ve created, and it’ll pop out of the clips holding it into the center console. Be gentle, there are connectors.
Remove connectors from the bottom center, upper left under the parking brake switch, and under the start/stop button if equipped
Install the new unit in reverse order. There are no new connectors or surprises, but the new unit will have a difference shift indicator that doesn’t match how the B8 is set up, which is why we removed the old one.
Optional: Installing the External GSM Antenna
As I mentioned at the start of this entry, I was unable to find a GSM antenna on my cabriolet. The A4 and Q5, and presumably the A5 coupe have a sharkfin antenna that leads to a breakout box with a FAKRA connector that transmits GSM signals. My service manual states that I may have one, but I did not find the module on mine, nor was I particularly looking forward to running 500cm of cable from the rear of my car to the front, so I took the “easy” way. If anyone would like that 500cm of cable, let me know, and I’ll ship it to you for the cost of shipping.
The unit I purchased provides 3 meters of cable connecting to a small antenna. This is far more cable than I needed, but it was readily available to ship without doing anything custom. I chose to fit it underneath the top vent/speaker cover and route the cable down to the MMI unit. To do this, one has to remove that vent cover, and then get behind the MMI display for access to that area.
Remove the 5F MMI control unit if it is not yet removed. You will be threading a cable into that area, and connecting the cable to the rear of the MMI unit.
Remove the top vent using the plastic trim tools. The vent is secured by 10 plastic clips. By inserting a thin wedge and gently tilting it to pry them out, I was able to remove the piece without breaking clips. Make sure each clip is released before trying to pull, as the cover is incredibly flimsy, and then you’ll be heading over to wolfautoparts.com for part 8T1 819 636 (in black).
Remove the silver trim surrounding the MMI display. This is also secured by clips, but it’s far less flimsy. Note that the silver portion is a cover over the frame assembly, so make sure you’re pulling from under the frame (slide in from the top of the vents), and not the flimsy cover, or they will separate. A cable is connected to the warning flasher button — pressing down on the tab facing away from the edge, and gently pulling the connector out in the same direction will disconnect it.
To remove the MMI display, there are four T20 torx screws. Please, for the love of everything holy, use a screwdriver or bit that is magnetized. The area underneath the display has two cavities on either side that love swallowing bolts, and I have literally no idea where they go. I have lost two bolts and a microSD card. Don’t ask. The display simply pulls away, and there are a few cables connected. You could lay a cloth down and let it dangle, there should be some wiggle room.
It will be hard to see, but looking straight back into that newly found cavity, there’s a seam in the plastic that can be revealed using a small wedge trim tool. Pushing that open will show light on the other side. Using that sliver, push the antenna itself through the left hand side of that slot will get that antenna into the left chamber of that top vent. Pull it through, and adhere the antenna to either the front or rear side.
Toward the right of that cavity, push the connector side of that cable into the void, and continue to thread it until you can’t anymore. More often than not, this will send it down the right hand side of the stack. Reach into the cavity where the MMI control unit once was, up the right hand side, and attempt to fish the FAKRA connector down into that cavity, and pull the rest of the cable through.
Wrap the remaining cable into a bundle, leaving enough to stretch to the control unit, and zip tie the bundle.
Connect the FAKRA end to the upper purple connector at the rear of the unit, connect any other missing cables, and reinstall the control unit.
Reinstall the MMI screen. This is done in reverse of the above with no real gotchas. Place screen back in front of the cavity. The bottom two mounting holes also have bumps above them that fit into small holes on the screen, allowing one to align the screen properly. Screw bolts into place.
Reinstall the trim piece. Reconnect the emergency flasher button to avoid a fault code by inserting the cable back in the module. No force should be required. The trim piece snaps into place, paying careful attention to the top of the trim, as it requires some finesse to slide into place.
Reinstall the top vent. Align each clip carefully and gently push into place. Remember how flimsy it is.
Optional: Installing the Radio (56)
Audi makes the infotainment rack really easy to find and test against, it’s in the trunk behind an easy-to-open panel. Unfortunately, the convertible makes the process of replacing the radio far more difficult than the HOWTOs elsewhere describe. Apparently, on other models, that easy-to-open panel is all that’s required to unbolt the assembly, get the radio out, and replace it. On the Cabriolet, we have to worry about a hydraulic pump, and the whole side trim piece had to come out as it didn’t provide enough room for the rack to come out.
Remove trunk floor covering
Lift the floor release, as if getting to the spare tire
Using a forked plastic trim tool, release the three expanding clips at the hinge of the floor covering, save them
Pull out the floor covering
Remove front floor covering
Fold down the rear seats using the release levers
Inside the passenger compartment, release the four expanding clips between the seats and the floor covering
Remove the floor covering in the direction of the trunk
Remove rear cross panel trim (plastic piece surrounding the lip and pin where the trunk closes)
Pull back the rubber seal and use a wide trim tool to pull the plastic piece up and over the seal
Using the wide tool, start pulling the whole plastic piece up vertically to release the clips holding it in
You’ll note at the bottom of the inside portion of the plastic piece that two arms come down and align with metal pins that come out, which won’t be affected if one is pulling vertically, but you’ll need those to align to when reinstalling
Remove left tie-downs
Fold up the tie down hooks, revealing 2 phillips-head screws
Unscrew those screws
Pull out the tie downs
Remove release lever
Pull the lever, revealing a circular expanding rivet
Remove the rivet using a small pry tool or flathead screwdriver. It is stubborn, just keep prying at the edges, following the circle until it heads out.
Pull out the remaining rivet, save
Use the trim tool to gently pull the assembly away from the carpet. There is something of a retaining hinge on the left side, so pull from the top and right to get it to come out
Leave it dangling, do not remove the cable
Prepare top of panel
Close the trunk
Open the roof enough that the back glass portion convertible top is fully up, and the compartment cover is fully up
Support the back of the convertible top with a wood stick or something else supportive
Reach under the enclosure trim where the top would lay, and push it up as if putting a large object in the trunk
Unclip the left hand side of that enclosure. There’s a vague L shape from the metal piece that you pushed up, down a couple of inches, and then toward the seat back. That portion is a plastic frame pushed with 4 clips toward where you are standing. Gently push them out so that the piece dangles.
Those were attached to a carpet piece that continues to taper forward toward the seat backs. At the end of that taper is another expanding clip that can be removed with the forked trim tool.
Remove wood support
To remove the side trim, use the plastic trim tool to cleanly separate it from the rubber trim, and then pull the clips away from the body. There are three clips to separate, and they aren’t adhered strongly, so make sure the trim is getting under the clips, and not just pushing at the side carpet. One clip is left and slightly down from the left of the release lever. One is to the right and down slightly further of the release lever. One is down further from that left hand clip, closer to the opening of the trunk. Once pulled open, be mindful of the cable connecting to the trunk light.
Move hydraulic pump
Remove the two bolts securing the retaining bracket over the green foam pump cover
Remove two connectors from the top of the retaining bracket, but no need to disconnect
Remove two connectors from the side of the bracket, and it’s far easier to disconnect them by pinching the side buttons and gently pulling apart
Remove the bracket
Swivel the hydraulic pump out. The lines on the right side of the pump should not be removed, the pump can just swivel out that direction.
There’s a rack and possibly an amplifier now in view. There are 4 nuts securing the rack in place — left of amplifier, bracket right lower amplifier, right lower rack, bottom center rack, remove them
Disconnect cables from the rear of the radio
Swivel the rack out so that the radio can slide out toward the front of the car. This will require some screwing around, I ended up pulling it toward me, and leaning the top toward me so the radio could slide out nearly horizontally
There are two “buttons” of sorts on the sides of the radio, but as the radio is positioned in the car, it’ll be on the top and bottom of the unit, on the edge closest to you. Those have to be pushed in, and then the radio will slide toward the front of the car.
Slide the new radio in just like the old one came out, connectors facing the rear of the car, buttons on the edge closest to you
Push the rack into place. Note the bottom center stud almost requires a slight lift of the rack to set into place. Once that’s in place, it’s much easier to guide back into place
Connect cables to the rear of the radio
Replace 4 nuts
Do it all in reverse order. Some hints and tricks:
If the clip came off the back of the carpet, use a torch to melt the plastic into the carpet fibers. A quick hit with a butane torch does wonders. Don’t melt it or start a fire, just re-engage what’s already there
Don’t forget to align the arms of the cross panel trim with the pins, or things will break
Open module 56 – Radio
Select the 07 – Coding option
Select Long Coding
Coding is as follows
0: 02 (USA)
1: 00 (Sirius, US)
2: as is
3: 01 if standard amp, 02 if B&O
Optional: Installing the Temperature Control Unit (08)
This is the easiest thing to install, with the most annoying software.
Remove the old unit
With the 5F out, pull back on the temperature control unit with two hands, applying equal pressure. The unit is held in place by 4 clips.
Disconnect the two cables at the back. There’s a plastic pin at the top center of each that slides easily away from the unit, and then a tab that is pushed down while the cable is slid out.
Install the new unit, same layout, same cables
Open module 08 – Auto HVAC
Select the 07 – Coding option
Enter in the old coding value from your previous HVAC unit, but append an additional ’00’, as there’s an additional byte on these new units
Select the 10 – Adaptation button
In channel 79, change from 1 to 0. This changes the blower unit to this generation to allow fan control speed to work.
In channel 35, use ‘0’ if you have a humidity sensor, ‘1’ if you do not. Chances are, you do not.
Note: Hi from the past, everyone! This post is likely very out of date. There are new tools to replace Project Croissant, and new driver packs available for Surface products including the Go. This hasn’t been updated since February of 2019.
I’m a tablet hopper. I love the idea of a tablet, but they always seem to fall short in one way or another. I’ve had a ton of Surface devices, iPads, and even a few Galaxy Tabs. My favorite device of all time is probably the first generation ThinkPad 10, but it’s just slow enough at this point that it’s not as fun as it once was. My current primary is a 10.5″ iPad Pro.
I do love the Surface lineup, but Windows 10 is a surprising shortcoming. Don’t get me wrong, I really like Windows 10, but from a tablet perspective, it’s a huge step back from Windows 8. Do note, however, that’s the only nice thing I’ll say about Windows 8.
What I’ve really been waiting for is a really good 10-11″ ChromeOS tablet. ChromeOS has a great core, Android support, Linux support for the apps you need, all wrapped up in easy updates and elegant consistency. Usually. The only devices in this form factor are the Acer Chromebook Tab 10, and the clone tablets that are based on that form factor. The ARM chip is somewhat anemic, but I’m mostly okay with that. My concern is the lack of supporting hardware — namely, decent cases, and nicely integrated keyboard designs. Once something comes out that fits that niche, I’m first in line.
Until then? Haxxxxx.
Enter Project Croissant. Croissant, formerly Chromefy, is a tool to convert a ChromiumOS image to a full ChromeOS image. ChromiumOS is the open source version of ChromeOS, consisting of most of what makes ChromeOS good, but missing closed source bits, including Android support. By utilizing a ChromeOS recovery image, Croissant can generate a ChromeOS image that can be installed on most anything with some reasonable driver support. Armed with this, I’m hoping to make a Surface Go, arguably one of the best form factors out there right now, a much more useful tablet for me.
What definitely doesn’t work:
Front and Rear Cameras
Power button to wake, but other touch events or keys seem fine
Touch response is odd, a press event occurs even on light touches or drags
The type cover function key icons do not correspond to their ChromeOS functionality
Sleep still burns some battery
What really works:
Wi-fi and bluetooth seem to work splendidly
The stylus responds well, and the pen icon appears
The type cover attaches and disconnects as one expects, backlight works, everything is fine
The SD card mounts just fine
USB-C devices work exactly as they should
Lid sensor with Type Cover
To create this image, I used another machine running Linux. This can be done in a virtual machine, or using a Linux live image.
Retrieve updated board.bin from Killer Networking wireless firmware
With all of our dependencies gathered, we can actually create our installation image
Uncompress each image into a directory
Copy chromefy.sh into the same directory
Execute chromefy to create the image, using something similar to sudo bash chromefy.sh chromiumos_image.img chromeos_11151.113.0_nocturne_recovery_stable-channel_mp.bin chromeos_11151.113.0_caroline_recovery_stable-channel_mp.bin
Write the updated chromiumos_image.bin to a USB stick using Etcher or similar
Upon completion, remove and reinsert the USB stick
Insert updated firmware and configuration to our ChromeOS image
Find the partition containing the rootfs, which may have automounted under /media/your-username/, and contains directories like ‘bin’, and ‘lib’
Replace [path-to-rootfs]/lib/firmware/ath10k/QCA6174/hw3.0/board.bin with the previously downloaded file
Replace [path-to-rootfs]/lib/firmware/ath10k/QCA6174/hw3.0/firmware-6.bin with the previously downloaded file
Create [path-to-rootfs]/etc/modprobe.d/ath10k.conf and add options ath10k_core skip_otp=yto the file
Unmount the mounted USB filesystems
Get your Surface Go and running
Within Windows, go to Settings > Update and Recovery > Recovery
Under Advanced Startup, select Restart Now
Navigate to Troubleshoot > Advanced, and select UEFI Firmware Settings
Under Boot Configuration, disable Secure Boot and set USB Storage to the top of the boot order
Select Reboot to boot from USB stick
This is a bit of the test front for the image. One is able to log in and poke around a bit within the USB live image. The installation process got a little hairy, though, at least for ArnoldTheBat 72 + Eve 71. Note that the first command run will blow away the copy of Windows installed on the Surface Go. There are instructions available on the Project Croissant GitHub README for doing multiboot. As I have the 64gb Go, multiboot makes no sense for me. Also note that the 128gb Go uses SSD instead of eMMC, so the device name is going to change, likely to some derivative of /dev/nvme0n1.
Hey, welcome to the new nicholasmelnick.com, largely the same as the old nicholasmelnick.com.
Given that the Ambition Framework has gone to sleep, and I’ve largely stopped hobby development on Vala, it was about time that I both migrate my blog away from Parchment, and also merge together some of the other blogs I’ve maintained over the past few years.
While I’m not the biggest fan of WordPress, it provided two things that I really wanted out of a writing platform — a solid history of maintenance and security updates, and the ability to host comments without too much pain. Here we are.
A bigger write up later, but I had to share. This is a “double DIN” bezel/console — actually, VW Golf sized — from tt8n.de installed in a 2002 Audi TT, with a Joying JY-VL130 VW-focused Android-based head unit.
I had no idea alternators were so heavy. Dense little bastards, aren’t they?
Alternator change was mostly uneventful, except inconveniently placed — like everything else in this car. I followed this guide to get down in there. It was mostly uncovered during the timing belt work, but I really didn’t want to do the full disassembly, so the guide helped. While removing the vacuum reservoir tank (what the guide calls ‘the black canister’), I snapped a connector off the tank, which means that I had to replace the tank (8n0 131 541). Hooray plastic molding, and hooray Wolf Auto Parts.
Picked up a remanufactured alternator from Advance Auto Parts. Looks to be a rebuild in a Bosch housing. Everything lines up well and looks good, so we’ll see how long it lasts. I have the receipt if not. Bosch offers their own remanufactured units, but they don’t have any dealers in Minnesota, and don’t seem to sell online. Oh well. Out the door for under $130 for a nice looking, easily installed unit.
New on the left, old on the right. Have a weird feeling that the old one was original.
So, of course, this nice, new looking unit stands out a bit.
The big issue was that it would have been far easier to do while I was doing everything else, but I’m glad I did the timing belt beforehand. Reattaching the accessory belt blind, without removing the sound dampener or putting the car on jack stands was doable, but far easier when I remembered where everything was. The other issue was getting enough clearance without taking everything out that I had already taken out before. Most people seem to take out a vacuum reservoir tank that sits next to the passenger side headlight. Easy enough to remove — disconnect the hose tangle on top, remove one 13mm bolt, remove a vacuum line, remove. Except while trying to remove the self-clamping vacuum line, I broke the plastic piece it attaches to clear off the tank.
So, thanks Wolf Auto Parts for the quick delivery of a replacement tank. Pro tip – to remove this line, you can see the outline of a little button on the lip of this thing, about 1cm long, running along the lip. That has to be pushed in, and then the line can be removed safely and successfully. Save yourself the $35-$40 to replace the tank.
Needless to say, everything is a success. All my lights disappeared, and running voltage is perfect.
After 3 years of ownership, finally had to do some real work on the TT, and when it rains, it pours — but more on that later. This Audi TT has one of the VW/Audi 1.8T variants, which means it uses a timing belt, and the replacement interval on these has dropped due to premature failure of the timing belt over the years. If the belt goes, so goes your engine — with bent valves at the very minimum. The manual states that it should be replaced every 105,000 miles, whereas the common knowledge now is 60-70k. I have no idea when it was done last, but if I’m going to do anything fun in the car, should probably take care of this.
The nice thing about owning a 15 year old car is that everything’s been done already by someone else, so I followed the excellent Timing Belt replacement guide by BlueTTop on the AudiWorld forum. I used the ECS Timing Belt kit with the Gates belt, and picked up a new Coolant Expansion Tank as mine was yellowed, and one 4-pin connector to replace a cracked housing on my 1st cylinder coil pack. Total replaced on the car included the aforementioned connector and coolant expansion tank, as well as the timing belt, accessory belt, tensioning pulley, tensioning dampener, water pump, and thermostat. For good measure, I also did an oil change.
I won’t go through every step of what I did, as the guide above did it far better than I, but just to highlight a few things…
Everything was dirty. This is almost-before, with the charge pipe removed, but most everything else still in place. Notice the very yellowed coolant expansion tank in the upper left.
Purchased an engine support bar from Harbor Freight for the occasion, as I’d have to either do that or get another jack, and felt this was safer if I had to buy something. Oddly, this was the most nerve wracking part for me, as I was so afraid of what would happen if something broke and the engine came loose. Note the trusty Bentley manual and what I’ve dubbed as “the tool tray” on the front of the car.
When draining your coolant, make sure the hose is on all the way, or you get a garage floor full of coolant. Doh.
The existing timing belt looks dry and old, but maybe the new one does already.
There is not a lot of room to work with these connectors, and I have a feeling this is already an aftermarket harness. The Lisle 57750 wire terminal tool kit from Amazon did a great job here, and way cheaper than the VW/Audi tool.
After everything was said and done, it sure looks a lot cleaner. I used Simply Green as I went to clean off parts as I disassembled and reassembled. I didn’t clean everything under the hood, as you can see by the battery tray, plastic surround, and some of the hoses.
Honestly, this was a lot of fun. It’s a 1-2 day job that took me about a month in between job and kids and time with family, but it was nice to just work on one piece at a time, especially when I needed something calming. There were frustrating parts — bolts that were nearly impossible to get to (hello, bottom thermostat housing bolt), missing tools (bought a torque wrench that only went up to 30 lb ft, while the engine needs 33 and 40, and the wheels need 89), things that didn’t make sense (is that supposed to spin or no?). There were also fantastic parts, like when the timing belt finally went on, every TDC mark lined up, and after a few spins, still lined up.
The test drive after went well, except for not putting quite enough coolant in. A new problem cropped up, though. On one of my drives, all of this lit up:
ABS, Brake, ESP, and Alternator. Not a good sign. VAG-COM doesn’t help me, as I have another persistent K1 Short to Ground issue that pulling fuses is not helping me track down. Battery is putting out 12.5, but testing the alternator gave me over 16V. I guess there’s the problem. Either it’s the voltage regulator on the alternator, or something else in the alternator, or both… Next up, replace the alternator!
In non-mechanical repairs, finally had a chance to replace two issues on my vehicle, and one looks pretty awesome. First one was replacing the passenger side lower grille, where most cars would have a fog light. It was missing, and there was just one big stupid looking hole in the front. Second, I replaced the rear valance (lower bumper, surrounding exhaust pipes) with the one that came with the upmarket V6 model. It wasn’t just for the look — at some point, someone rear ended this car, likely before I owned it, and it was cracked and snapped from the retaining bolts. I’m just happy I didn’t need a whole bumper.
It looks great. Ignore the fact that I’m in the reflection.