Last week I noticed it started acting up again 😔 so I revisited the problem. My previous settings had apparently been wiped out with my upgrade to Ubuntu 20.04. But in my search I found some other settings that might help.
I’m applying both the settings from this post and my previous one, as I feel like the settings in this post additionally help smooth out mouse wheel scrolling.
From this bug report you can also change the latency settings for your bluetooth (BT) mouse. I found it easiest to execute these commands as root so I could use tab completion to navigate the bluetooth mac addresses:
The BT device info file is at /var/lib/bluetooth/<BT adapter MAC>/<BT device MAC>/info.
So I type vi /var/lib/bluetooth/<TAB>EF<TAB>info to get to the right file.
vi /var/lib/bluetooth/90\:78\:41\:CA\:1E\:02/EF\:E5\:F1\:99\:EA\:24/info
My file started out with these default ConnectionParameters:
One of the first things I did after purchasing my SCX24 Jeep was buy the Subaru Brat body made for the Carisma MSA-1E 1/24 scale platform. I remember the Subaru Brat from my childhood with a fond weirdness, because it was definitely different than anything else on the road. The BRAT officially stood for Bi-drive […]
I remember the Subaru Brat from my childhood with a fond weirdness, because it was definitely different than anything else on the road. The BRAT officially stood for Bi-drive Recreational All-terrain Transporter. The Japanese understood American’s desire for a vehicle to be fun. The Brat tapped into the American desire for a vehicle that is conventional in some ways, but very unconventional in others. As such, the vehicle was never sold in Japan, it was for the English speaking markets of the U.S., U.K., and Australia.
The thing I remember most about it was the rear-facing seats. The first thing I did for this body was 3D print a set of rear facing seats in 1/24 scale and hot-glued them to the bed facing backwards. For the print I used this 1/10 scale design. I scaled the seat so it was 20mm wide and then moved it down on the Z-axis 3mm to create a flat bottom.
Body Mounting
To mount the body I purchased a set of Axial Chassis Parts 201002. It includes the body post, which can also be used in the rear. Rather than using the body pin, I purchased some 3/8″ rare earth magnets from a local store called Ax-Man Surplus. I used CA glue to attach them onto the body post.
The magnets have enough height that I didn’t need to remove the body clip retainer post.
The magnets came on a thin steel disk, so I hot-glued that to the under-side of the bed.
I purchased some 2-56 threaded rod and some 1/8″ aluminum tubing from my local hobby shop. It pays to ask them where to find this stuff as the threaded rod was in the airplane section.
Using the DIY end links, I needed to cut the rod 8.5mm shorter than my desired link length, and the tubing 10mm shorter than the rod. The upper rods on the SCX24 are 7.5mm shorter than the lower rods. The Carisma has a wheelbase of 125mm, the Axial JLU is 133mm. To remove 8mm of wheelbase I constructed my 4-link rods with the following lengths:
Lower: 50mm center to center (41.5mm rod, 31.5mm tubing)
Upper: 42.5mm center to center (34mm rod, 24mm tubing)
Thinking about this, the tubing isn’t strictly required, but I noticed the 2-56 rod bends easily, so the tube will help add rigidity. The tubing also provides a smooth surface that will less likely get hung up on rocks. Lastly, the tubing helps create an exact rod length. I used a dremel to cut the tubing about 1mm long, then did additional grinding & sanding to get the length just right.
I also cut the length of the rear drive shaft down 8mm (just the outer sleeve section) as well using a pipe cutter – similar to what I did on the Slash 4×4 Crawler.
Suspension Mounts
I moved the suspension mounting points forward 8mm by drilling a couple extra holes in the frame rails with a 1/16″ drill bit.
I could have went with The Goblin frame, but that presented a different set of issues as it lacks mounting hardware and the flat sides don’t accommodate the stock body & suspension mounts as nicely as the stock steel C-channel frame rails.
To allow the suspension & body post mount to move forward, I also trimmed part of my battery tray.
The Chassis Parts Kit comes with an extra battery tray if you need to put your rig back to box stock. To restore the driveshaft you’ll need Axial Part # 31611.
Bicycle tire tubes are the most prolific piece of trash that is generated by the bicycling industry. Luckily it’s nowhere near the poundage of old car tire waste out there. Still because it’s the thing most often replaced on a bike, people have found several clever ways to use punctured tubes instead of putting them in the landfill.
I like to keep one in my bike trunk bag for carrying things. I use the tube as a shoulder belt to strap things to my back. I’ve used them to carry a shovel, a pole saw, and most recently: snowshoes.
I used one in January to go snowshoeing at my local nature center:
Rigging With Bike Tubes
Fastening one end of any object is simple, go around the object(s) and loop the tube back through itself to to create a cow hitch.
You can only create a cow hitch on one end. On the other end I use a cheap carabiner (that I also keep in my trunk bag) as a link to fasten it similarly.
Then I sling it over my shoulder and head on my way. I keep a couple different sized punctured bike tubes in the garage. You’ll find that some are too loose and others are too tight, depending on what you’re trying to carry. Experiment with sizes and then put the most versatile one in your trunk bag for ad-hoc trips.
My only complaint about this trunk bag is the Made in China tag. Not because of the country of origin, but because of its placement. From day one of owning this bag, it was perfectly in the way of the zipper. You can see that mine has been “run over” by the zipper a number of times.
Despite the stupid tag, this thing has several useful compartments. Mesh zippered pockets on the sides where I keep sunscreen, lip balm, zip ties, and rain covers for shoes.
There’s a mesh pocket and elastic cords on the top for anything you want to have quick access to – or if you want to strap something down that is bigger than the bag.
Inside it’s one big compartment, but on the lid there’s another pocket inside. I keep a set of repair tools with a patch kit, and a couple maps of the local trail system.
It securely locks into place with the trademark Topeak QuickTrack system, so I never worry about it flying off.
Case Study: RC Trunk
I write about radio control (RC) related stuff over at MeatballRacing.com and recently I found a YouTube channel called Berm Peak that also shares my enthusiasm for both bicycles and RC.
In this video he reviews a different Topeak trunk bag that has fold-out panniers.
He put in a 1:24-scale crawler, which is a perfect fit for these bags. Similarly, I put in my Jeep, the controller, some sunglasses and headed to the local nature center to do some crawling.
When when I got there, I switched to snowshoes for a hike.
I can’t fit the showshoes in the trunk bag, but I have a carrying solution for those I’ll share later.
I hiked to a good spot and played in the snow.
The trunk bag is indeed super versatile – I feel like every year I come up with another useful way to use it.
Configuring E911 support with Skyetel is simple on their side, as it should be. But because it’s an emergency service, I wanted to do a separate post to underscore the importance on making sure it works.
From your Incredible PBX Admin website control panel, navigate to Connectivity -> Outbound Routes.
Skyetel requires that your outbound caller ID is the 11-digit number of your phone. I updated my other Skyetel setup post to reflect this change – it was previously using a 10-digit number.
Edit your main Skyetel route and click Duplicate:
Then you’ll have a copy of your main route that you can edit:
Per the IncrediblePBX E911 Wiki page, set the name to E911 and set Override Extension to Yes. The other change I made was to mark it as an emergency route:
You can see by the help text that it forces the caller ID (CID) to be a specific number (if set). I don’t have any other numbers besides the one I ported from Google Voice, but you’ll be able to see later how it clearly indicates this extension is set up for emergency calling.
Then go to the Dial Patterns tab and remove all of the pre-existing dialplans by clicking the trashcan icons:
Click the Dial patterns wizards button to generate new dialing plans:
Unselect all options except “US Emergency” and then click Generate Routes. You’ll have all of the appropriate 911 and 933 (testing) dialplans added, plus some extras to make sure all bases are covered. There’s a sad story behind Kari’s Law and why these extra dialplans are ultimately unnecessary, but I’ll keep them just in case.
Once those are added click Submit at the bottom and you’ll be brought back to the Outbound Routes list where you can see the emergency icon lit up:
Move your E911 Route up to the top of the list by dragging it by the crosshair icon. Then click “Apply Config” to save all your changes and reload the dialplan.
Skyetel Settings
Over at the Skyetel dashboard, it’s as easy as following their support document. I’ve included screenshots here as additional examples. Head to Phone Numbers -> Local Numbers and click the gear icon on the number you want to edit.
Once editing your number, go to the E911 tab and set it to Enabled. Fill out your name and address so Skyetel can route you to the correct emergency service provider.
Once it’s enabled, the E911 indicator will be bright green:
Enabling E911 will add $1.50/mo to your bill. But for $2.50 per month ($1 for the local number, $1.50 for E911), it’s way cheaper than having a land line. I like that anyone in the house can dial 911, especially kids.
Testing
Testing 911 dialing seems like a nerve-wracking thing to do. Luckily Skyetel understands your anxiety and has set up a test number of 933 that you can dial to make sure everything is set up correctly.
When you dial 933, if everything is set up correctly an automated Skyetel message will tell you it’s working. It will also read back your configured caller ID and address to verify.
One minor hiccup I noticed is that my call didn’t go through until after a 15 second delay. If it were an actual emergency I would be panicking during this time.
The problem was at my RTP-300. You can dial a pound (#) to commit to the dialed number immediately – I like this for dialing my 702 extension. If I want to dial that extension, I dial 702# – because I might otherwise be trying to call a friend in the Las Vegas 702 area code.
I inspected the dialplan for the two lines of my RTP-300:
Pro-tip: Notice I’m using the cloudflare DNS servers rather than the ISP-provided ones. The Comcast DNS servers have gone down on me before and their performance is generally lacking.
My concern was if the bridged router can’t contact IPv6 addresses, the same is probably true for the devices that are connecting through it.
I found the solution in this thread on the OpenWrt forums. While it’s easy to statically assign an IPv4 address, along with a default gateway and DNS server – for IPv6 it’s easiest to set up another lan interface specifically for IPv6 that gets it’s IPv6 address (and routes) automatically from the upstream router – rather than assigning it statically.
The TL;DR version of this post is to add this to your network config:
Configuring IPv6 Bridging through the Web Interface
To do the same thing above via LuCI – the OpenWrt web interface, here’s how. Initially on the Network -> Interfaces page, ou can see my IPv4 lan with the wan ports disabled:
Click “Add new interface…”
Name it “lan6” and choose the DHCPv6 client protocol. For the interface, select the @lan alias. Then click Create Interface. You’ll be brought to a second screen.
All I had to do on this page was change the “Request IPv6-prefix” value to disabled. No need to change anything on the other tabs – the defaults are fine.
Now the Status -> Overview page on my bridged router looks like this:
Now I can ping IPv6 addresses from the command line on my bridged router:
root@ap2:~# ping -c 2 ipv6.google.com
PING ipv6.google.com (2607:f8b0:4009:807::200e): 56 data bytes
64 bytes from 2607:f8b0:4009:807::200e: seq=0 ttl=115 time=17.884 ms
64 bytes from 2607:f8b0:4009:807::200e: seq=1 ttl=115 time=17.351 ms
--- ipv6.google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 17.351/17.617/17.884 ms
One of my 2021 goals is to better understand IPv6 concepts (at least as well as I can understand IPv4). If there’s any *nix configurations I find helpful along the way, I’ll post ’em here.
Recently I noticed I would occasionally get the dreaded question-mark network icon: “?” I did some digging around and it was related to Ubuntu’s Network Connectivity check. Several posts out there simply say to disable the check by going to Settings -> Privacy and turning Connectivity Checking to “Off.”
But by disabling connectivity checking, I don’t get the automatic prompt to connect through a captive portal (like at my local library). I wanted to actually fix the problem, so I needed to understand what the problem was.
Ubuntu uses the URL http://connectivity-check.ubuntu.com/ by default for connectivity checking. I went to the command line to see if there were any problems using curl while on my wired network:
$ curl -v http://connectivity-check.ubuntu.com/
* Trying 35.222.85.5...
* TCP_NODELAY set
* connect to 35.222.85.5 port 80 failed: Connection timed out
* Trying 35.224.99.156...
* TCP_NODELAY set
* Connected to connectivity-check.ubuntu.com (35.224.99.156) port 80 (#0)
> GET / HTTP/1.1
> Host: connectivity-check.ubuntu.com
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 204 No Content
< Date: Wed, 09 Dec 2020 16:02:34 GMT
< Server: Apache/2.4.18 (Ubuntu)
< X-NetworkManager-Status: online
<
* Connection #0 to host connectivity-check.ubuntu.com left intact
Everything seemed to work out in the end, but you can see that the first request failed so it had to fall back to the secondary address. This whole request took 122 seconds.
The problem is, the default connectivity check interval is 120 seconds. So after the first one times out Network Manager flags the computer as offline. Apps like Spotify recognize the offline network status and stop working – despite being actually connected to the internet.
The Debian default URL is http://network-test.debian.org/nm which has 3 IPs listed (for fall back) and it is much faster. All I had to do was add this file:
sudo vi /etc/NetworkManager/conf.d/11-connectivity.conf
I gave it a little longer interval – 5 minutes instead of 2. It’s probably not necessary as their service responds much faster, but I want to avoid the question-mark-of-no-connectivity as much as possible but still retain features like captive portal detection.
Restart after you’ve saved that file and you should be good to go!
At my work we have a thing about giving tacos (🌮) to people when they help you out, do something great or funny – as a show of support. The tacos can be redeemed for prizes or gift cards – and one of those prizes is a Fitbit. I wanted a model upgrade from the ones our company was offering. In November 2020, Costco had a Fitbit Charge 4 bundle for $90.
I brokered a deal with my wife. I’d redeem a $100 Amazon gift card with my tacos and give it to her, and then buy the model I want from Costco.
The reason I got the Charge 4 is because it has a built-in GPS. I don’t like using my phone to record my activities as it drains the battery very quickly. Also my handheld Garmin eTrex Vista GPS is starting to act weird – it randomly turns off sometimes when I’m riding.
Hooking it up to Strava was simple, I did it through the https://strava.fitbit.com/ website. Here’s an article that goes into detail about connecting the two. When you finish an activity, Fitbit automatically transfers the information via the app (including GPS track) to Strava. As a bonus now my heart rate information is sent for more accurate effort calculation.
Battery Life
Since I considered GPS to be a requirement, this is the 2nd best feature. It would be a folly to call it charge if the battery life sucked. Without GPS use, I can easily go a week before putting it on the charger. With GPS use, I’ve found it takes about 10% of the battery for every hour you’re recording activity. By that marker, I’d guess you could use the GPS for 9+ hours before it conked out.
Sleep Tracking
All fitness trackers can track sleep. Along with a great battery life, the Charge 4 charges quickly. Putting it on the charger while I take a shower is enough to keep it topped up. I don’t ever have to take it off for a night to get a full charge.
Water Resistant 50 Meters
I always would put my phone in a ziplock bag while kayaking and still worry that it will make it’s way to the bottom of the lake. Fitbit says you can wear your tracker or smartwatch in the shower, pool and beyond. That should be just fine for kayaking – it will get wet, but it will survive.
Those are the good things, now onto some of the annoyances…
UI Issues
The swipe functions don’t always work as expected, partly because the screen is small, partly because the screen is very tall and skinny.
The most common issue is when I swipe down from the top to get the notification list (to inevitably clear it out). The Charge often thinks I’m swiping to the side because I didn’t swipe perfectly vertical top to bottom.
Another thing I do occasionally is leave the home screen on the weather. It will stay here until you press the watch button – so the next time you wake the screen you can see the weather. You’ll still get notifications on these secondary screens, but once they go away you cannot swipe down to see them again – you must go back to the home screen (clock) and swipe down from there.
Multiple Activities
I realize this is probably an edge case, but I imagine I’m not the only one experiencing this issue. The Charge 4 currently can’t pause one activity and start another. Here’s the scenario: I put studded tires on my bike and rode to the local nature center:
I brought my snowshoes with me, and when I got to the trail, I walked around the park. On the Charge 4 you can pause and resume your activity. This is great if I bike somewhere like the library, I can pause my ride when I arrive, and resume once I head home – then it records as a single activity.
But you can’t start another GPS activity until you finish the first one. Rather than my activity showing up as three (ride out, hike, ride back) I want them to appear simply as two: bike & snowshoe.
So I used my trusty(?) Garmin for the hike and hoped it didn’t turn off on me while I was out.
Verdict?
I looked at getting the cheapish Apple Watch for around $150 and also looked at the new Fitbit Versa 3. While they both have built-in GPS, neither of them were going to match the battery life of the Charge. If it goes on sale again for < $100 I would easily recommend it to anyone looking at a fitness watch – especially for tracking bike rides.