niels / Automotive / #bynco,#cx-5,#mazda

Bynco Review

In October 2019 I tried to buy a car online using Bynco. Unfortunately someone else bought the car I was interested in before I could do so. I ended up buying a similar car elsewhere.

Two months ago I gave Bynco another shot. As they appear quite popular with expats and non-Dutch speakers I decided to blog about my experience here.

Bynco selects cars from associated car dealers, presents them online, and delivers them to your home. The dealers reach a larger audience and the buyers have more cars to choose from.

A clever concept. Assuming they vet the dealers and pick their best cars, Bynco can operate with very little risk.

Trade-in

We own two cars and wanted to trade one of them in when buying a new car. I filled out the relevant form on Bynco’s website and uploaded the necessary photos.

Bynco has clear guidelines on which photos to upload. These are identical to other car buying services, allowing you to re-use the photos and get an offer from multiple services.

Bynco staff called to discuss the data I entered and told me to send the photo’s once more, this time using WhatsApp instead. An odd redundancy in the process – probably not by design.

Within 24 hours I received Bynco’s trade-in offer. It was as a good offer. Better than other offers I had requested elsewhere. The amount offered was then listed as a credit on Bynco’s website and valid for 14 days.

Choosing a car

My wife and I have a fairly specific list of requirements. This allowed us to quickly narrow things down to a handful of cars. The filters on the website got us pretty close, but some details needed to be checked and compared manually.

Then the hard part: how do you select the right car without test driving each one of them? Bynco advertises with a 2 week test-drive, but you don’t want to spend weeks switching and trying cars. Ideally our first pick would be a keeper.

As multiple cars met our requirements, I focused on a few other things to pick the best one for us (in no particular order):

We ended up with 2 nearly identical Mazda CX-5’s. One was a nicer color, the other had a hitch installed. After some more digging into the history of both cars, I discovered that the one with the nicer color had an extended factory warranty. (Not pictured.)

The factory warranty was not listed on Bynco’s website but could be seen in screenshots posted on the car dealer’s website. I think Bynco overlooked this, as they did tag many other cars with a factory warranty label, but not this one.

In any case, this made our choice easier: get the one with the nice color and factory warranty, have the hitch installed later.

Buying the car

Buying the car is much like buying anything else online. You select the car, fill out your details in a form and choose whether you want to pay immediately or upon delivery. Bynco’s staff earlier recommended I choose the latter, so I did.

At this point things get a little exciting. There’s some delay between purchasing the car online with Bynco, and Bynco communicating this with the dealer. As you can read in reviews on Google it has happened to other customers that the dealer had already sold the car to someone else.

Two days after ordering Bynco staff called to confirm the purchase and agree on the delivery date. The delivery date was set 10 days from the day that I ordered. He also sent me the meldcode needed to insure the car.

There was no communication during the remaining days. Supposedly the car was being checked and prepared for delivery, which would have allowed for some kind of progress indicator on the website. But there’s no such thing.

Delivery

The day before delivery I received an e-mail indicating the time-slot (09:00-13:00) and reminding me to have the car insured.

The next morning the car arrives at exactly 09:00. The delivery guy is kind, professional and the car looks great. During our mutual inspection we find only a few very minor scratches.

After inspecting the car, we decide to go ahead with the purchase. This is when I make the payment. The delivery guy calls the dealer to transfer ownership of the car. He also calls Bynco to deal with the ownership of the car we’re trading in.

Payment goes through an escrow service called GoCredible. If you decide to return the car within the test-drive period, GoCredible will refund you your money.

The delivery guy leaves with our old car, and I took the new car for a spin. During this first drive I did notice a few things that I missed earlier:

  • The gas-tank was only half filled. The Bynco website promises a full tank of gas.
  • One of the interior lights does not work.
  • Two more small scratches. Obfuscated by the rain early that morning, now visible in the bright sunshine. Nothing that would have changed my mind though.
  • The Bynco advertising on the tag holder appears to be just a piece of tape. Underneath is the name of the car dealer.

Test driving

Bynco allows for a 14-day test driving period. There’s a catch though: if you drive more than 200km, you have to pay a depreciation fee. Not unreasonable, but something to keep in mind.

APK (MOT)

All Bynco cars – that are old enough to need one – come with a valid APK (MOT). Our car came with one too. Or so both Bynco and rdw.nl told me. I did not find the printed APK report with the car’s papers though, so I asked Bynco that they arrange the car dealer to send the report to me.

Bynco did not get back to me on the issue. After a week they did call me to see if I was happy with the car. During this call I reminded them of the issue and they promised to take care of it that next Monday. Unfortunately this still did not result in any follow-up.

In the mean-time a trip abroad that we had planned was just days away. The paper report is not required in the Netherlands as police check the APK status with the RDW directly. However, foreign police may not be able or willing to do so.

So I reminded Bynco once more. This time I did get a response, be it an unexpected one: the dealer was unable to produce the report. In Bynco’s opinion I did not need it, and if I really wanted one I should go to an RDW office and pay to get an official copy.

This struck me as odd. The car was imported from Germany. I was its first Dutch owner. For the RDW to show a valid APK the car dealer (or their importing agent) had to present a German report to the RDW upon importing, or get a new Dutch APK afterwards. Either way, a paper report was in the dealer’s hands when he got the car.

Time to argue had run out though, so I drove to the RDW office as suggested. Unfortunately the RDW had more bad news: the APK status was indeed based on a German report presented upon import. The RDW cannot issue copies of foreign APK reports. They also confirmed I better not take the car abroad without proper paperwork.

Prior to this I would’ve given Bynco a 5-star review. But they really dropped the ball here. Had they told me at my first request that the APK was German and paperwork could not be produced, I would’ve had ample time to obtain a new Dutch APK. Instead, they delayed, appeared oblivious to the fact that the car has a German APK, and wasted my time and gas by sending me to the RDW office.

We ended up taking the risk and made the trip without the APK paperwork. We have more trips planned though. Longer trips, traveling much further. Upon return in the Netherlands I contacted the local Mazda dealer to arrange a new APK. They provided one for free.

Warranty

Bynco’s cars come with 2 warranty promises:

  • No maintenance costs the first 6 months or 5000km.
  • General warranty for 12 months.

As you may expect, these come with a ton of small-print.

No maintenance costs for 6 months

The car I purchased had both its APK and next maintenance scheduled in more than 6 months. I’m guessing this applies to all Bynco cars, meaning they can offer this warranty without much risk.

As I needed a new APK early, I discovered that the brake rotors were close to being worn out. This resulted in an AC5 remark on the APK report. I’ve had them replaced promptly.

After purchasing the car I received a lot of information about the 12-month warranty described below. But no word on the 6-month no-maintenance promise. It’s unclear whether I can claim the brake replacement with Bynco.

The APK debacle has me believe they would argue that I could’ve postponed the replacement. AC5 is a heads-up, not an obligation to immediately replace them. We have a long (5000km+) trip planned though, and I don’t want to deal with this abroad if I can avoid it.

General 12-month warranty

This 12-month warranty is outsourced to AutoTrust, an insurance plan with some considerable shortcomings:

  • You cannot go to the brand dealer, you have to use one of their partners.
  • In my area their partners have terrible ratings on Google. I would never go there, even if it’s free.
  • They may use used parts, merely delaying the real repair costs to when the warranty expires.
  • Tons of things are excluded. It excludes more than it includes.

It’s better than nothing, but not much more than that. I would prefer a BOVAG warranty. Better coverage aside, BOVAG warranty is covered by the seller, not an insurance company. This incentivizes the seller to ensure the car has no issues before selling it to you.

Conclusion

Although I cannot give Bynco a 5-star review, I do recommend checking them out when you’re in the market for a new car. Understanding their shortcomings and doing your own due diligence, you can still make a good purchase.

I do hope they further improve their service. The issues I encountered are easily prevented. Specifically, I hope they offer future customers:

  • Brand new APK. Regular car dealers almost always throw this in for free. It’s very cheap – assuming the car is indeed technically sound. It would have avoided my APK issues and have given me an earlier heads-up on the worn out brakes.
  • Optional BOVAG warranty. While BOVAG is not perfect, it’s preferable over AutoTrust.

Update

2022-11-10: I received an e-mail from Bynco today. All cars now come with 1 year APK + 1 year BOVAG. The latter can be optionally be extended to 18 or 24 months. As this is exactly what I recommended, I’m upgrading them to 5 stars!


niels / Automotive / #carplay,#continuity,#hotspot,#iphone

CarPlay or an AI box?

Recently, I looked into dongles that take the existing CarPlay head unit in your car and make it work wirelessly. Unfortunately all of these dongles suffer the same problem: a 1-2 seconds delay when making phone calls.

There’s also no way to use CarPlay for apps while still routing phone calls through regular Bluetooth. At least not with the head unit in my 2018 Mazda CX-5. As soon as CarPlay connects, it drops all Bluetooth connections, even those to other phones.

Although I don’t make a lot of phone calls while driving, it needs to work without annoying delays when I do.

AI boxes

Disappointed with the wireless dongles, I allowed the Amazon and AliExpress algorithms to take me into the world of AI boxes. I don’t know what AI stands for in this context, but there’s no Artificial Intelligence involved.

The AI boxes are essentially Android set-top boxes for your car. Instead of an HDMI output to your TV, these boxes output CarPlay to your car’s head unit. You read that right – even though these are Android boxes, that run Android apps, they output a CarPlay signal to your car’s head unit.

Watching reviews I couldn’t help wondering: why don’t people just use an old phone? These AI boxes aren’t cheap, nor are they very good.

iPhone vs AI Box

Different people have different needs, so let’s do a quick comparison. I’m comparing to an old iPhone here – comparing to an Android phone should yield similar results.

Start-up

AI boxes have no battery. This means they need to boot every time you start the car. This can be annoying if the AI box needs considerably more than than your head unit.

The iPhone does have a battery, but it could run out if not charged regularly. (Continue reading to see how I improve this.)

Platform Features

AI boxes are Android based. There are no iOS boxes. Great if you’re an Android user. Inconvenient if you’re an iPhone user.

AI boxes will show any Android app on your head unit (barring compatibility issues). The iPhone will display only apps designed for CarPlay.

Some AI boxes come with an additional HDMI output, allowing you to stream video to screens in the back seat.

Support

Apple promise a minimum of 4 years of major updates on all iPhones. It’s also known to release security fixes regularly, for several years.

AI box manufacturers make no promises. I have not seen any of them provide a major Android version update or regular security updates.

So far it appears that AI box manufacturers limit themselves to releasing functional bug-fixes for their latest products only.

Performance

The fastest AI boxes available at the time of writing use a low-end chip-set from 2017. The Qualcomm SD660. It’s decent, but not great. Other AI boxes use lesser chip-sets. They are outdated the day you buy them.

Setup

To make the CarPlay iPhone a superior alternative to an AI box, we need to prevent its battery from draining. We can accomplish this by using the Shortcuts app and a proper charger.

Shortcuts

If you haven’t already, install Apple’s Shortcuts app. We’ll use it to automatically enable the low power- and airplane modes on the CarPlay iPhone when we’re not using it.

In Shortcuts:

  • Switch to the Automation tab
  • Choose Create Personal Automation
  • Scroll down to CarPlay and choose Disconnects.
  • Tap Next.

Now add the following Actions:

  • Set Low Power Mode > Turn Low Power Mode On.
  • Set Airplane Mode > Turn Airplane Mode On.
  • Tap Next.

Finally:

  • Disable the Ask Before Running option.
  • Tap Done.

We also have to create the reverse: when CarPlay connects we want the CarPlay iPhone to disable the low power- and airplane modes.

In Shortcuts:

  • Switch to the Automation tab
  • Choose Create Personal Automation
  • Scroll down to CarPlay and choose Connects.
  • Tap Next.

Now add the following Actions:

  • Set Low Power Mode > Turn Low Power Mode Off.
  • Set Airplane Mode > Turn Airplane Mode Off.
  • Tap Next.

Finally:

  • Disable the Ask Before Running option.
  • Tap Done.

Charger

To ensure your CarPlay iPhone charges sufficiently on shorter drives, get a USB-PD charger providing 20W or more. For example, the 40W mophie charger that Apple sells.

Phone Calls (optional)

Connect both iPhones to the same iCloud account and the same Wi-Fi. Then enable Calls on other devices on your regular iPhone. This allows the CarPlay iPhone to answer your calls. Without any noticeable delay or other annoyances.

To setup a Wi-Fi hotspot in the car I used the Huawei E8372 USB adapter. I’ve tried using a Personal Hotspot on the CarPlay iPhone itself, but that is not supported.


niels / Blog / #classicpress,#migration

Migration

Update: all content has been migrated. Will keep this post around to test theme and plugins.

While content is being migrated, you can find the old blog at https://peen-dev.pages.dev/

Testing my new Markdown editor plug-in for ClassicPress.

Does it work?

  1. Yes
  2. No
  3. Not sure

More test.

<?php
echo "code test";

testing, 1, 2, 3. 4.


niels / Software / #linux,#ubuntu

Preferring IPv4 over IPv6

As explained in my previous post, I get my IPv6 subnet through a tunnelbroker. This is a great way to use IPv6 when your Internet provider does not yet support it.

There’s a downside though: the tunnel adds overhead in terms of both latency and a lower MTU. It also introduces an additional point where congestion or failure can occur.

Getaddrinfo

Most Linux apps use the getaddrinfo function to obtain the IP address for a hostname. It is this function that causes your apps to prefer IPv6 over IPv4.

Fortunately it comes with a configuration file, which we can modify to have it prefer IPv4 over IPv6.

Open the configuration file by entering:

sudo vi /etc/gai.conf

(replace vi with your preferred editor)

Then scroll down to the following section:

#precedence  ::1/128       50
#precedence  ::/0          40
#precedence  2002::/16     30
#precedence ::/96          20
#precedence ::ffff:0:0/96  10
#
#    For sites which prefer IPv4 connections change the last line to
#
#precedence ::ffff:0:0/96  100

Uncomment that last line, so it looks like this:

#precedence  ::1/128       50
#precedence  ::/0          40
#precedence  2002::/16     30
#precedence ::/96          20
#precedence ::ffff:0:0/96  10
#
#    For sites which prefer IPv4 connections change the last line to
#
precedence ::ffff:0:0/96  100

Save the file.

That’s it! Most apps will now prefer IPv4 over IPv6.


niels / Hardware / #linux,#router

ExtraIP.com and UDM Pro

I’m using IPv4 and IPv6 ranges supplied by extraip.com. (Available in The Netherlands only.)

Unfortunately the UDM Pro has no UI for setting up the required tunnels. I had to write a script, which I’m sharing below.

My Use Case

The script configures dnsmasq to distribute the IPv6 subnet using SLAAC. If you prefer, you could comment this section out and use the DHCPv6 server in the UI instead.

It also omits the traditional use of an IPv4 network-, gateway- and broadcast- address, allowing us to use all 8 IP addresses for clients or servers.

Prerequisites

The instructions assume you have udm-utilities installed.

Disable IPv6 in UI

To prevent unexpected behavior created by the UI, we disable IPv6 on both WAN and LAN interfaces.

WAN

Open the Network application and navigate to Internet. Now edit your WAN interface to disable its IPv6 Connection.

LAN

Open the Network application and navigate to Settings > Networks. Edit the relevant network,
scroll down to IPv6, and switch it to Disable.


niels / Blog / #linux

Tweaking Elementary OS

Elementary OS has been my favorite desktop distribution for the past 2 years or so. Its out-of-the-box experience is very close to my preferred setup. Nothing is perfect though. Below are the tweaks I apply when installing Elementary OS 6.

BTRFS

The default Elementary OS install uses an encrypted ext4 partition. If you want to use encrypted btrfs, you’re out of luck. The Custom Install will let you use btrfs, but not encrypted btrfs. My work-around is very simple, if a bit tedious.

Default install

First run the default install like you would normally do. This erases your disk and sets you up with an encrypted ext4 partition.

Open Encryption

Boot the installer once more. This time, choose a Custom Install. Choose to manage your disks, which fires up gparted. Use gparted to Open Encryption on the encrypted partition. (You could do this on the command-line, but this is quick and easy.)

Convert to btrfs

Exit gparted and go backwards in the installer. Now choose to enter the Demo mode and open a Terminal.

Enter the following command to convert the ext4 root to btrfs:

sudo btrfs-convert /dev/mapper/data-root

This takes only a minute or so on a clean install.

Update /etc/fstab

Before rebooting, we’ll need to update /etc/fstab. To access the file, we first mount our newly converted btrfs filesystem:

sudo mount /dev/mapper/data-root /mnt

We then determine the new blkid of the btrfs filesystem:

sudo blkid /dev/mapper/data-root

It will show you two ID’s, you need the first one:

sudo blkid /dev/mapper/data-root 
[sudo] password for niels:         
/dev/mapper/data-root: UUID="dba6ca21-79e0-49c9-b889-c37d2ccb446a" UUID_SUB="27c5452a-7878-4357-8f95-596a08cab55b" TYPE="btrfs"

Now use your favorite text editor to update /etc/fstab:

PARTUUID=48e067c9-0a5e-4ad7-acb6-2313973188d6  /boot/efi  vfat  umask=0077  0  0
UUID=da66e7aa-9162-4550-b527-514a045759b0  /boot  ext4  noatime,errors=remount-ro  0  0
UUID=dba6ca21-79e0-49c9-b889-c37d2ccb446a  /  btrfs  defaults,noatime,autodefrag,compress  0  0
/dev/mapper/data-swap  none  swap  defaults  0  0

Two things have been updated:

  1. The UUID, as obtained with blkid.
  2. The options changed from noatime,errors=remount-ro to defaults,noatime,autodefrag,compress

Reboot

You should now be able to reboot into your Elementary OS install.


niels / Blog / #linux

Magic Trackpad 2 with Xorg

Not quite happy with the solution described in my original post, I took another look at the problem and found:

  1. Xorg defaults to the libinput driver (just like Wayland), not the synaptics driver.
  2. The libinput driver complained about a parse error in /usr/share/libinput/50-system-lenovo.quirks.

I ignored the parse error the first time around because I do not have any lenovo input devices on this computer and assumed the parse error would not affect other devices. However, a parse error in 1 quirks file, does cause all quirks files to be ignored.

Deleting the faulty quirks file resolved the issue. My Magic Trackpad 2 now functions properly with Xorg.

Original post

I’ve been using an Apple Magic Trackpad 2~~ with my Ubuntu desktop for the past two years or so.
When using Wayland this works perfectly out-of-the-box.

Not so much with Xorg. It detects the trackpad and loads the driver, but the cursor won’t move unless I press the trackpad at the same time.

Creating /etc/X11/xorg.conf.d/10-touchpad.conf
fixed this:

Section "InputClass"
    Option "FingerLow" "2"
    Option "FingerHigh" "2"
EndSection

If you have more – potentially conflicting – input devices you’ll want to expand that to:

Section "InputClass"
    Identifier "Apple Magic Trackpad"
    MatchIsTouchpad "on"
    MatchUSBID "05ac:0265"
    Driver "synaptics"
    Option "FingerLow" "2"
    Option "FingerHigh" "2"
EndSection

Use lsusb to check that the USBID is correct for your trackpad:

❯ lsusb
...
Bus 001 Device 005: ID 05ac:0265 Apple, Inc. Magic Trackpad 2
...

niels / Blog / #jigsaw,#php

Jigsaw

Whoops. I accidentally wiped the VM running my WordPress blog.

Rather than restore the WordPress blog I decided to go with Jigsaw this time. Jigsaw is one of many static site generators, or as the cool kids say, a way to use Jamstack.

Jamstack

What makes a Jamstack site more than just a regular static website is its use of
Javascript and API services to add dynamic features to your website.

The JAM in Jamstack stands for Javascript, API and Markup

I’m not a fan of microservice architectures like Jamstack as it tends to add complexity, cost and a dependency on potentially unreliable 3rd-parties.

That said, I don’t need much functionality on my blog. This is JAMstack with very little J and no A. I may add comments at some point, but only if I can self-host them.

WordPress

The founding developer of WordPress, Matt Mullenweg, has this to say about it:

JAMstack is a regression for the vast majority of the people adopting it

Matt is biased, of course, but I agree with his arguments. Read them in more detail at thenewstack.io.


niels / Hardware / #laptop,#legion,#lenovo,#ubuntu

Ubuntu on the Legion 5 Pro (2021)

Heads up: I’m not a gamer. A combination of specs, pricing, availability and urgency led me to purchase this laptop for productivity reasons. My run-through may not cover all aspects needed for gaming.

As my work depends on this laptop, I did purchase the additional on-site support.

Keyboard Shortcuts

If the RGB show on the keyboard annoys you, use Fn+SPACE to select a less annoying mode for now.
Also: Fn+L to toggle the Legion logo, Fn+Q to toggle thermal profile. These shortcuts work on both Windows and Linux.

Windows

I expect support to want to deal with Windows only, so I left Windows installed.

Even if you decide to remove Windows, I recommend you set it up first and use it to apply any BIOS or firmware updates prior to installing Ubuntu. (As it turns out, my laptop already shipped with the latest BIOS version.)

The factory Windows install uses about 60GB, so I shrunk the Windows-SSD down to 75GB. You can use the Disk Management tool to do so.

BIOS

Shutdown the laptop and restart it while pressing F2. This gets you into the BIOS. I made the following changes:

  • Graphic Device: Dynamic Graphics (you will need to use nomodeset in GRUB if you don’t do this)
  • Boot > PXE Boot to LAN: Disabled;

That’s it. I left Secure Boot enabled. Ubuntu and Ubuntu based Linux distributions have no problem with it.

Ubuntu

Install Ubuntu. How to install Ubuntu has been well documented, I won’t repeat it here.

You’ll notice that while the brightness function keys appear to work they do not actually change the brightness. You can fix this by editing /etc/default/grub and adding the amdgpu.backlight parameter:

GRUB_CMDLINE_LINUX="amdgpu.backlight=0"

Run update-grub, reboot, and things will work.

Battery Conservation Mode

Battery conservation mode prevents your laptop battery from charging fully and keeps it around 60% instead. This should aid the longevity of the battery.

For convenience I created a systemd unit called /etc/systemd/system/battery-conservation-mode.service
with the following content:

[Unit]
Description=Battery Conservation Mode

[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c 'echo 1 > "/sys/devices/pci0000:00/0000:00:14.3/PNP0C09:00/VPC2004:00/conservation_mode"'
ExecStop=/usr/bin/bash -c 'echo 0 > "/sys/devices/pci0000:00/0000:00:14.3/PNP0C09:00/VPC2004:00/conservation_mode"'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Which we then activate using:

systemctl daemon-reload 
systemctl start battery-conservation-mode 
systemctl stop battery-conservation-mode 
systemctl enable battery-conservation-mode 

Function Lock

Maybe you never use the F1, F2,.. keys and just want them to function them as permanent media keys (for volume control, etc.) instead. You can do this by enabling the Fn Lock:

echo 1 > "/sys/devices/pci0000:00/0000:00:14.3/PNP0C09:00/VPC2004:00/fn_lock"

Just like the battery conservation mode, you could put this in a systemd unit to enable it automatically at start-up.

File System

Ubuntu comes with periodic SSD trimming out of the box. No need to enable that yourself. If you use encrypted partitions like I do, Ubuntu also enabled discard in crypttab automatically. Some changes I made to fstab:

  • Added the ssd option for my btrfs file systems.
  • Added the noatime option to both btrfs and ext4 file systems.

niels / Software / #linux,#snap,#wayland,#zsh

Snap apps with Wayland and Zsh

There’s are two longstanding issues using snap apps in Ubuntu. Two issues that still exist in Ubuntu 20.04 beta.

Snap apps don’t show up in Gnome’s Activities view when using Wayland instead of Xorg.
Snap apps cannot be started from the command-line when using zsh instead of bash.
Looking into this, I ran into numerous discussions on both topics. Most notably:

ZSH

The zsh work-around mentioned in these and other discussions works very well. Just add the following line to your .zshrc. (Adding it to /etc/zsh/zshrc should work as well.)

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'

When using bash the scripts in /etc/profile.d/ are sourced automatically. Zsh does not bother with them, unless we instruct it to.

Wayland

Unfortunately the work-arounds for Wayland did not work for me. They failed to convince Wayland and Gnome to look in snap’s applications folder.

The following line links snap’s applications folder into the Ubuntu’s main applications folder.

sudo ln -s /var/lib/snapd/desktop/applications/ /usr/share/applications/snap

Unlike all the other work-arounds out there, there’s no need to logout and log back in. This works instantly.