esptool
, the Espressif SoC serial bootloader utility, tends to dislike cheap Flash chips attached to the various incarnations of the ESP32 chip family. And it seems to dislike them even more when running esptool
on Linux than on other OSs.
The common error mode is seeing it break at the 2MB barrier when trying to dump (esptool read_flash
) a 4MB flash configuration.
esptool.py v4.7.0 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP32 Chip is ESP32-D0WD-V3 (revision v3.1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz [..] Detected flash size: 4MB [..] 2097152 (50 %) A fatal error occurred: Failed to read flash block (result was 01090000: CRC or checksum was invalid)typically at the 2MB barrier. I found the solution in a rather unrelated esptool Github issue: Create an
esptool.cfg
file in the project directory (from where you will run esptool
):
timeout = 30
is the setting that fixed reading flash memory via esptool read_flash
for me.
When your esptool.cfg
is read, esptool
will tell you so in its second line of output:
esptool.py v4.7.0 Loaded custom configuration from /home/dl/[..]/Embedded_dev/ESP-32_Wemos/esptool.cfg Found 1 serial ports Serial port /dev/ttyUSB0 Connecting...... [..]Thank you Radim Karnis and wibbit from the Github issue linked above.
htop | https://hcb.hackclub.com/htop/ | https://hcb.hackclub.com/donations/start/htop |
PCP | https://hcb.hackclub.com/pcp/ | https://hcb.hackclub.com/donations/start/pcp |
Burger Menu ( ) -> View -> Folders -> Folder Pane Header
.
Unfortunately there is no way to remove the same eye-catching "New Event" button for the Calendar view via a UI setting.
This needs a user CSS file to override the button as non-visible.
To make it process the user CSS Thunderbird needs a config setting to be enabled:
Burger Menu ( ) -> Settings -> General
Config editor...
button on the bottom righttoolkit.legacyUserProfileCustomizations.stylesheets
true
to enable the user CSSuser_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
to ~/.thunderbird/abcdefgh.default/prefs.js
to the same effect (do this while Thunderbird is not running; replace abcdefgh
with your Thunderbird profile ID).
Now create a new directory ~/.thunderbird/abcdefgh.default/chrome/
, again replacing abcdefgh
with your profile ID.
Inside the new directory create a userChrome.css
file with the following content:
update-alternatives --config x-www-browser
was pointing at Firefox already, of course.xdg-mime query default text/html
delivered firefox-esr.desktop
, of course.
Still nearly every link opens in Chromium...
As usually the answer is out there. In this case in a xfce4-terminal bug report from 2015.
The friendly "runkharr" has debugged the issue and provides the fix as well.
As usually, all very easy once you know where to look. And why to hate GTK again a bit more:
The GTK function gtk_show_uri()
uses glib's g_app_info_launch_default_for_uri()
and that - of course - cannot respect the usual mimetype setting.
So quoting "runkharr" verbatim:
1. Create a file exo-launch.desktop in your ~/.local/share/applications directory with something like the following content: [Desktop Entry] Name=Exo Launcher Type=Application Icon=gtk-open Categories=Desktop; Comment=A try to force 'xfce4-terminal' to use the preferred application(s) GenericName=Exo Launcher Exec=exo-open %u MimeType=text/html;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;application/x-mimearchive; Terminal=false OnlyShowIn=XFCE; 2. Create (if not already existing) a local defaults.list file, again in your ~/.local/share/applications directory. This file must start with a "group header" of [Default Applications] 3. Insert the following three lines somewhere below this [Default Applications] group header [..]: x-scheme-handler/http=exo-launch.desktop; x-scheme-handler/https=exo-launch.desktop; x-scheme-handler/ftp=exo-launch.desktop;And ... links open in Firefox again. Thank you "runkharr"!
dmesg
log showed entries that looked suspicious:
Googleing these error -110
and error -71
is a bit hard. Now why the USB driver does not give useful error messages instead of archaic errno
-style numbers escapes me. This is not the 80s anymore.
The wisdom of the crowd says error -110
is something around "the USB port power supply was exceeded" [source].
Now lsusb -tv
shows device 1-7 ... to be my USB keyboard. I somehow doubt that wants more power than the hub is willing to provide.
The Archlinux BBS Forums recommend to piece together information from drivers/usb/host/ohci.h
and (updated from their piece which is from 2012) /tools/include/uapi/asm-generic/errno.h
. This is why some people then consider -110
to mean "Connection timed out". Nah, not likely either.
Reading through the kernel source around drivers/usb/host
did not enlighten me either. To the contrary. Uuugly. There seems to be no comprehensive list what these error codes mean. And the numbers are assigned to errors conditions quite arbitrarily. And - of course - there is no documentation. "It was hard to do, so it should be hard to understand as well."
Luckily some of the random musings I read through contained some curious advice: power cycle the host. So I did and that did not make the error go away. Other people insisted on removing cables out of wall sockets, unplugging everything and conducting esoteric rituals. That made it dawn on me, the mainboard of course nicely powers the USB in "off" state, too. So switching the power supply off (yes, these have a separate switch, go find yours), waiting a bit for capacitors to drain and switching things back on and ... the errors were gone, the system booted within seconds again.
So the takeaway message: If you get random error messages like
pgp-clean
from signing-party.
self-sigs-only
on gpg 2.2.27 and it looks like Debian Bookworm will get gpg 2.2.40. This would add import-clean
but Daniel Kahn Gillmor patched it out. He argues correctly that this new default could delete data from good locally store pubkeys.
This all ends in you getting some random combination of self-sigs-only
and / or import-clean
depending on which Linux distribution and version you happen to use.
Better be explicit. I recommend to add:
~/.gnupg/gpg.conf
to make sure you can manage signatures yourself and receive them from keyservers or local imports as intended.
In case you care: See info gnupg --index-search=keyserver-options
for the fine documentation. Of course apt install info
first to be able to read info pages. 'cause who still used them in 2023? Oh, wait...
apt
or dnf
commands always have a consistent set of servers to talk to.
That's why running separate "software stores" is a bad idea:
That way more admins need to learn how to run high availability services for dubious business opportunities to "later" monetize services. Services that nobody cares to pay for and thus opportunities that never materialize. But every company wants to find that out again. Because if Apple could do it, why shouldn't Canonical be able to do it? $$$!1!!
So, can't update Firefox on Ubuntu 22.04 right now.
At least there is https://status.snapcraft.io/:
So I can check back tomorrow if I can update my web browser ...
Update
09.11.2022 12:15 CET
The Snapcraft distribution system seems quite flaky, this is the downtime log:
Bonus points for the bad client side implementation:
https://www.youtube.com/feeds/videos.xml?channel_id=<id goes here>
you get a really nice Atom 1.0 (~RSS) feed for your feedreader.
Unfortunately the Channel ID is hard to find while you are navigating Youtube with usernames in the URL.
E.g. https://www.youtube.com/c/TED is TED's channel, full of interesting and worth-to-watch content (and some assorted horse toppings, of course).
But you have to read a lot of ugly HTML / JSON in that page to find and combine
https://www.youtube.com/feeds/videos.xml?channel_id=UCAuUUnT6oDeKwE6v1NGQxug
which is the related RSS feed.
Jeff Keeling wrote a simple Youtube RSS Extractor that does well if you have a ../playlist?...
or a .../channel/...
URL but it will (currently) fail on user name channels or Youtube landing pages.
So how do we get the Channel ID for a Youtube user we are interested to follow?
Youtube has a great API but that is gated by API keys even for the most simple calls (that came only with v3 of the API but the previous version is depreciated since 2015)1:
DebConfVideos
at curl
and grep
:
You can also use get a feed directly with a username: https://www.youtube.com/feeds/videos.xml?user=<username> The one I use most is the one for playlists (if creators remember to use them). https://www.youtube.com/feeds/videos.xml?playlist_id=<playlist id>For the common case you don't even need the channel ID that way. But it is also conveniently given in a
<yt:channelId>
tag (or the topmost <id>
tag) within the Atom XML document.
Thanks, smpl!
forUsername
iterator may not even work and the "best practice" seems to be mucking around with the search
call.
ping
as well. The connection essentially dropped dead while the WiFi icon was continuing to show full signal strength.
The logs did not show anything useful. These are really hard to access on ChromeOS (JSON format and no useful UI on the Chromebook itself, Google provides a viewer on Google Apps Toolbox but that requires uploading the logs). Better than no logs at all but not really nice.
The ChromeOS bug tracker and its Google corporate counterpart are also not useful at this time.
For reference:wifi_power_save disable
This unfortunately only lasts until the next reboot but it does persist over suspend cycles (aka closing the lid).
Updates 24.01.2022: What I love about the community is the playful creativity that inspires a game like Wordle and that in turn inspires others to create fun tools around it: Robert Reichel has reverse engineered the Wordle application, so in case you want to play tomorrow's word today .. you can. Or have that one guess "Genius" solution experience. JP Fosterson created a Wordle helper that is very much the Python version of my grep-foo above. In case you play regularly and can use a hand. And Tom Lockwood wrote a Wordle solver also in Python. He blogged about it and ... is pondering to rewrite things in Rust:
I ve decided to explore Rust for this, and so far what was taking 1GB of RAM in Python is taking, literally 1MB in Rust!Welcome to 2022. 01.02.2022: OMG. Wordle has been bought by the New York Times for "for a price in the low seven figures" (Source). Joey Rees-Hill put it well in The Death of Wordle:
Today s Web is dominated by platforms. The average Web user will spend most of their time on large platforms such as Instagram, Facebook, Twitter, TikTok, Google Drive/Docs, YouTube, Netflix, Spotify, Gmail, and Google Calendar, along with sites operated by large publishers such as The New York Times or The Washington Post. [..]Still kudos to Josh Wardle, a Million Pounds for Wordle. Well done! It was fun while it lasted. Let's see what the next Wordle will be. This one has just been absorbed into the borg collective.
The Web wasn t always this way. I m not old enough to remember this, but things weren t always so centralized. Web users might run their own small website, and certainly would visit a good variety of smaller sites. With the increasing availability of internet access, the Web has become incredibly commercialized, with a handful of companies concentrating Web activity on their own properties.
Wordle was a small site that gained popularity despite not being part of a corporate platform. It was wonderful to see an independent site gain attention for being simple and fun. Wordle was refreshingly free of attention-manipulating dark patterns and pushy monetization. That s why it s a shame to see it absorbed, to inevitably become just another feature of one large media company s portfolio.
Welcome to the Stallman wars Team Cancel: https://rms-open-letter.github.io/ (repo) Team Support: https://rms-support-letter.github.io/ (repo) Current stats are:
Team Cancel: 3028 signers from 1413 individual commit authors Team Support: 6249 signers from 5018 individual commit authorsGit shortlog (Top 10):
rms_cancel.git (Last update: 2021-04-07 15:42:33 (UTC)) 1228 Neil McGovern 251 Joan Touzet 86 Elana Hashman 71 Molly de Blanc 36 Shauna 19 Juke 18 Stefano Zacchiroli 17 Alexey Mirages 16 Devin Halladay 14 Nader Jafari rms_support.git (Last update: 2021-04-12 09:25:53 (UTC)) 1678 shenlebantongying 1564 nukeop 1550 Ivanq 826 Victor 746 Job Bautista 123 nekonee 61 Victor Gridnevsky 38 Patrick Spek 25 Borys Kabakov 17 KIM Taeyeob(last updated 2021-04-12 09:26:15 (UTC)) Technical info:
git shortlog -s
..mailmap
support as they have committed with different names.
Further reading:
Next.