noticket - updates
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,5 +1,5 @@
|
|||||||
|
*.lock
|
||||||
flymd*
|
flymd*
|
||||||
public/
|
public/
|
||||||
resources/
|
resources/
|
||||||
static/
|
static/
|
||||||
themes/
|
|
||||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "themes/papermod"]
|
||||||
|
path = themes/papermod
|
||||||
|
url = git@github.com:adityatelange/hugo-PaperMod.git
|
||||||
39
assets/css/extended/thumbnail.css
Normal file
39
assets/css/extended/thumbnail.css
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
.thumbnail-container {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail-container a {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail {
|
||||||
|
margin: auto;
|
||||||
|
padding: .75rem;
|
||||||
|
text-align: center;
|
||||||
|
max-width: 80%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail sub {
|
||||||
|
font-size: small;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail-gallery {
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
padding-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail-gallery a {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail-gallery .thumbnail {
|
||||||
|
display: inline-block;
|
||||||
|
margin: .125rem;
|
||||||
|
padding: .50rem;
|
||||||
|
width: 42%;
|
||||||
|
}
|
||||||
193
config.yaml
193
config.yaml
@@ -1,12 +1,12 @@
|
|||||||
# core
|
# core
|
||||||
baseURL: "https://bdebyl.net/"
|
baseURL: https://debyl.io/
|
||||||
title: "Collection of useful, and useless information"
|
title: debyl.io
|
||||||
theme: "even"
|
theme: papermod
|
||||||
|
enableEmoji: true
|
||||||
|
|
||||||
# settings
|
# settings
|
||||||
paginate: 5
|
defaultContentLanguage: en
|
||||||
defaultContentLanguage: "en"
|
languageCode: en
|
||||||
languageCode: "en"
|
|
||||||
buildDrafts: false
|
buildDrafts: false
|
||||||
canonifyURLs: true
|
canonifyURLs: true
|
||||||
enableRobotsTXT: true
|
enableRobotsTXT: true
|
||||||
@@ -15,10 +15,17 @@ markup:
|
|||||||
goldmark:
|
goldmark:
|
||||||
renderer:
|
renderer:
|
||||||
unsafe: true
|
unsafe: true
|
||||||
|
highlight:
|
||||||
|
noClasses: false
|
||||||
|
# anchorLineNos: true
|
||||||
|
# codeFences: true
|
||||||
|
# guessSyntax: true
|
||||||
|
# lineNos: true
|
||||||
|
# style: monokai
|
||||||
|
|
||||||
# google analytics
|
# google analytics
|
||||||
googleAnalytics: "UA-163975086-1"
|
googleAnalytics: UA-163975086-1
|
||||||
googleVerification: ""
|
googleVerification:
|
||||||
|
|
||||||
# See https://gohugo.io/about/hugo-and-gdpr/
|
# See https://gohugo.io/about/hugo-and-gdpr/
|
||||||
privacy:
|
privacy:
|
||||||
@@ -30,63 +37,135 @@ privacy:
|
|||||||
# https://gohugo.io/content-management/syntax-highlighting/
|
# https://gohugo.io/content-management/syntax-highlighting/
|
||||||
pygmentsCodefences: true
|
pygmentsCodefences: true
|
||||||
pygmentsCodefencesGuessSyntax: true
|
pygmentsCodefencesGuessSyntax: true
|
||||||
pygmentsOptions: ""
|
pygmentsOptions:
|
||||||
pygmentsUseClasses: true
|
pygmentsUseClasses: true
|
||||||
|
|
||||||
author:
|
|
||||||
name: "Bastian de Byl"
|
|
||||||
|
|
||||||
sitemap:
|
sitemap:
|
||||||
changefreq: "weekly"
|
changefreq: weekly
|
||||||
filename: "sitemap.xml"
|
filename: sitemap.xml
|
||||||
priority: 0.5
|
priority: 0.5
|
||||||
|
|
||||||
menu:
|
outputs:
|
||||||
|
home:
|
||||||
|
- HTML
|
||||||
|
- RSS
|
||||||
|
- JSON
|
||||||
|
|
||||||
|
languages:
|
||||||
|
en:
|
||||||
|
languageName: English
|
||||||
|
weight: 1
|
||||||
|
taxonomies:
|
||||||
|
category: categories
|
||||||
|
tag: tags
|
||||||
|
series: series
|
||||||
|
menu:
|
||||||
main:
|
main:
|
||||||
- name: "Home"
|
- name: Archive
|
||||||
|
url: archives
|
||||||
|
weight: 5
|
||||||
|
- name: Search
|
||||||
|
url: search/
|
||||||
|
weight: 10
|
||||||
|
- name: Tags
|
||||||
|
url: tags/
|
||||||
weight: 10
|
weight: 10
|
||||||
identifier: "home"
|
|
||||||
url: "/"
|
|
||||||
- name: "About"
|
|
||||||
weight: 20
|
|
||||||
identifier: "about"
|
|
||||||
url: "/about"
|
|
||||||
- name: "Archives"
|
|
||||||
weight: 30
|
|
||||||
identifier: "archives"
|
|
||||||
url: "/post/"
|
|
||||||
- name: "Tags"
|
|
||||||
weight: 40
|
|
||||||
identifier: "tags"
|
|
||||||
url: "/tags/"
|
|
||||||
|
|
||||||
params:
|
params:
|
||||||
favicon: "/static/img/favicon.ico"
|
env: production # to enable google analytics, opengraph, twitter-cards and schema.
|
||||||
since: "2017"
|
description: Theme PaperMod - https://github.com/adityatelange/hugo-PaperMod
|
||||||
logoImage: "/static/img/logo.png"
|
author: Bastian de Byl
|
||||||
images:
|
# author: [Me, You] # multiple authors
|
||||||
- "/static/img/logo-prev.png"
|
|
||||||
logoTitle: "bdebyl"
|
|
||||||
keywords: ["bastian", "de byl", "bdebyl", "bastian de byl"]
|
|
||||||
description: "A random assortment of my personal projects."
|
|
||||||
|
|
||||||
# paginate of archives, tags and categories
|
ShowAllPagesInArchive: true
|
||||||
archivePaginate: 20
|
ShowBreadCrumbs: true
|
||||||
# show 'xx Posts In Total' in archive page
|
ShowCodeCopyButtons: true
|
||||||
showArchiveCount: true
|
ShowPageNums: true
|
||||||
# The date format to use; for a list of valid formats, see https://gohugo.io/functions/format/
|
ShowPostNavLinks: true
|
||||||
dateFormatToUse: "2006-01-02"
|
ShowReadingTime: true
|
||||||
# show word count and read time
|
ShowRssButtonInSectionTermList: true
|
||||||
moreMeta: true
|
ShowShareButtons: true
|
||||||
# show "read more" link on post summary
|
ShowToc: false
|
||||||
readMoreEnabled: false
|
comments: false
|
||||||
postMetaInFooter: true # contain author, lastMod, markdown link, license
|
defaultTheme: dark
|
||||||
linkToMarkDown: true # Only effective when hugo will output .md files.
|
disableSpecial1stPost: false
|
||||||
contentCopyright: '<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc/4.0/80x15.png" /></a>'
|
disableThemeToggle: true
|
||||||
|
displayFullLangName: true
|
||||||
|
images: [images/papermod-cover.png]
|
||||||
|
|
||||||
social:
|
profileMode:
|
||||||
a-email: "mailto:bastian@bdebyl.net"
|
enabled: false
|
||||||
g-github: "https://github.com/bdebyl"
|
|
||||||
m-instagram: "https://instagram.com/bastian.remi"
|
homeInfoParams:
|
||||||
n-gitlab: "https://gitlab.com/bdebyl"
|
Title: >
|
||||||
e-linkedin: "https://www.linkedin.com/in/bastian-de-byl-90171b187"
|
:wave: Welcome
|
||||||
|
Content: >
|
||||||
|
I created this site as a way of showcasing my projects, or other general
|
||||||
|
ideas. It’s a sort of engineering portfolio, if you will.
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
This is just my personal blog site, feel free to get in touch with me
|
||||||
|
using the icon links below.
|
||||||
|
|
||||||
|
socialIcons:
|
||||||
|
- name: github
|
||||||
|
title: Github
|
||||||
|
url: https://github.com/bdebyl
|
||||||
|
- name: X
|
||||||
|
title: Twitter
|
||||||
|
url: https://x.com/bastiandebyl
|
||||||
|
- name: email
|
||||||
|
title: Email
|
||||||
|
url: mailto:bastian@debyl.io
|
||||||
|
|
||||||
|
# label:
|
||||||
|
# iconSVG: '<svg xmlns=http://www.w3.org/2000/svg height=25 viewBox=0 -960 960 960 fill=currentColor><path d=M320-240h320v-80H320v80Zm0-160h320v-80H320v80ZM240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z/></svg>'
|
||||||
|
# text: Home
|
||||||
|
# icon: icon.png
|
||||||
|
# iconHeight: 35
|
||||||
|
|
||||||
|
assets:
|
||||||
|
disableHLJS: true
|
||||||
|
# favicon: <link / abs url>
|
||||||
|
# favicon16x16: <link / abs url>
|
||||||
|
# favicon32x32: <link / abs url>
|
||||||
|
# apple_touch_icon: <link / abs url>
|
||||||
|
# safari_pinned_tab: <link / abs url>
|
||||||
|
|
||||||
|
# cover:
|
||||||
|
# hidden: true # hide everywhere but not in structured data
|
||||||
|
# hiddenInList: true # hide on list pages and home
|
||||||
|
# hiddenInSingle: true # hide on single page
|
||||||
|
|
||||||
|
# fuseOpts:
|
||||||
|
# isCaseSensitive: false
|
||||||
|
# shouldSort: true
|
||||||
|
# location: 0
|
||||||
|
# distance: 1000
|
||||||
|
# threshold: 0.4
|
||||||
|
# minMatchCharLength: 0
|
||||||
|
# keys: [title, permalink, summary, content]
|
||||||
|
|
||||||
|
# privacy:
|
||||||
|
# vimeo:
|
||||||
|
# disabled: false
|
||||||
|
# simple: true
|
||||||
|
|
||||||
|
# twitter:
|
||||||
|
# disabled: false
|
||||||
|
# enableDNT: true
|
||||||
|
# simple: true
|
||||||
|
|
||||||
|
# instagram:
|
||||||
|
# disabled: false
|
||||||
|
# simple: true
|
||||||
|
|
||||||
|
# youtube:
|
||||||
|
# disabled: false
|
||||||
|
# privacyEnhanced: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
instagram:
|
||||||
|
disableInlineCSS: true
|
||||||
|
twitter:
|
||||||
|
disableInlineCSS: true
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ link to a text file containing my full public key is attached.
|
|||||||
|
|
||||||
`70A4 AA02 555D BD55 9189 B4E0 F32B E05E ADAA 54FC`[^2]
|
`70A4 AA02 555D BD55 9189 B4E0 F32B E05E ADAA 54FC`[^2]
|
||||||
|
|
||||||
{{< sub >}}[**Public Key**](/static/pubkey.txt){{< /sub >}}
|
[**Public Key**](/static/pubkey.txt)
|
||||||
</center>
|
</center>
|
||||||
|
|
||||||
## Donations
|
## Donations
|
||||||
|
|||||||
6
content/archives.md
Normal file
6
content/archives.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: "Archive"
|
||||||
|
layout: "archives"
|
||||||
|
# url: "/archives"
|
||||||
|
summary: "archives"
|
||||||
|
---
|
||||||
@@ -4,8 +4,8 @@ date: 2019-01-16
|
|||||||
lastmod: 2019-02-11
|
lastmod: 2019-02-11
|
||||||
categories: ["Blog"]
|
categories: ["Blog"]
|
||||||
tags: ["photography"]
|
tags: ["photography"]
|
||||||
images:
|
cover:
|
||||||
- "/static/img/aperture-study/f17-f40-comp.jpg"
|
image: /static/img/aperture-study/f17-f40-comp.jpg
|
||||||
---
|
---
|
||||||
I found out recently that using the maximum aperture for a lens can have
|
I found out recently that using the maximum aperture for a lens can have
|
||||||
deminishing returns. Simply put: it makes the image look "soft", or otherwise
|
deminishing returns. Simply put: it makes the image look "soft", or otherwise
|
||||||
|
|||||||
@@ -27,16 +27,12 @@ better understanding of the tools and methods used.
|
|||||||
|
|
||||||
## Partitioning with `fdisk`
|
## Partitioning with `fdisk`
|
||||||
|
|
||||||
{{% admonition warning Warning %}}
|
|
||||||
This operation will destroy any data on the device, please ensure to back up
|
This operation will destroy any data on the device, please ensure to back up
|
||||||
any data desired prior to this operation!
|
any data desired prior to this operation!
|
||||||
{{% /admonition %}}
|
|
||||||
|
|
||||||
{{% admonition info Info %}}
|
|
||||||
Replace instances of `/dev/sdN` with your actual device name (e.g. `/dev/sda`).
|
Replace instances of `/dev/sdN` with your actual device name (e.g. `/dev/sda`).
|
||||||
References specific to partitions will be stated as such (e.g. `/dev/sdN1`,
|
References specific to partitions will be stated as such (e.g. `/dev/sdN1`,
|
||||||
`/dev/sdN2`)
|
`/dev/sdN2`)
|
||||||
{{% /admonition %}}
|
|
||||||
|
|
||||||
1. Remove any existing partitions on the drive:
|
1. Remove any existing partitions on the drive:
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ tags: ["emacs", "linux"]
|
|||||||
categories: ["Tutorial"]
|
categories: ["Tutorial"]
|
||||||
contentCopyright: true
|
contentCopyright: true
|
||||||
hideHeaderAndFooter: false
|
hideHeaderAndFooter: false
|
||||||
images:
|
cover:
|
||||||
- "/static/img/emacs-clang-libopencm3/header-completion.png"
|
image: /static/img/emacs-clang-libopencm3/header-completion.png
|
||||||
---
|
---
|
||||||
With some minor dependencies, it's fairly straightforward in setting up your
|
With some minor dependencies, it's fairly straightforward in setting up your
|
||||||
Emacs workflow to include IntelliSense-like auto-completion!
|
Emacs workflow to include IntelliSense-like auto-completion!
|
||||||
@@ -114,13 +114,11 @@ The above assumes that `libopencm3` is also places within the project
|
|||||||
directory
|
directory
|
||||||
{{< /sub >}}
|
{{< /sub >}}
|
||||||
|
|
||||||
{{< admonition warning Note >}}
|
|
||||||
There is a strange issue that is encountered with non-working completion for new
|
There is a strange issue that is encountered with non-working completion for new
|
||||||
header include statements. The workaround for this includes running `M-x irony-server-kill`after new header
|
header include statements. The workaround for this includes running `M-x irony-server-kill`after new header
|
||||||
additions to your current working file. Irony's server is clever enough to
|
additions to your current working file. Irony's server is clever enough to
|
||||||
restart itself after a completion request is triggered via `TAB` so this is a
|
restart itself after a completion request is triggered via `TAB` so this is a
|
||||||
fairly uninvolved workaround.
|
fairly uninvolved workaround.
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
|
|||||||
@@ -92,43 +92,34 @@ this via:
|
|||||||
- **ArchLinux:** `sudo update-ca-trust`
|
- **ArchLinux:** `sudo update-ca-trust`
|
||||||
- **Debian/Ubuntu, RHEL:** `sudo update-ca-certificates`
|
- **Debian/Ubuntu, RHEL:** `sudo update-ca-certificates`
|
||||||
|
|
||||||
{{< admonition tip "CA Path" >}}
|
|
||||||
On my system the full path to the CA certs is:
|
On my system the full path to the CA certs is:
|
||||||
|
|
||||||
- `/etc/ca-certificates/extracted/cadir/sks-keyservers.net_CA.pem`
|
- `/etc/ca-certificates/extracted/cadir/sks-keyservers.net_CA.pem`
|
||||||
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
Two following parameters should be added to your `~/.gnupg` configuration files:
|
Two following parameters should be added to your `~/.gnupg` configuration files:
|
||||||
|
|
||||||
### GnuPG Versions >2.1
|
### GnuPG Versions >2.1
|
||||||
|
|
||||||
{{< admonition note "gpg.conf" >}}
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
keyserver hkps://hkps.pool.sks-keyservers.net
|
keyserver hkps://hkps.pool.sks-keyservers.net
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
{{< admonition note "dirmngr.conf" >}}
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
hkp-cacert /etc/ca-certificates/path/to/CA.pem
|
hkp-cacert /etc/ca-certificates/path/to/CA.pem
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
### GnuPG Versions <2.1
|
### GnuPG Versions <2.1
|
||||||
|
|
||||||
{{< admonition note "gpg.conf" >}}
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
keyserver hkps://hkps.pool.sks-keyservers.net
|
keyserver hkps://hkps.pool.sks-keyservers.net
|
||||||
keyserver-options ca-cert-file=/path/to/CA/sks-keyservers.netCA.pem
|
keyserver-options ca-cert-file=/path/to/CA/sks-keyservers.netCA.pem
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
## *Optional* - Ensure keys refreshed through keyserver
|
## *Optional* - Ensure keys refreshed through keyserver
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ date: 2018-01-11
|
|||||||
lastmod: 2019-01-16
|
lastmod: 2019-01-16
|
||||||
categories: ["Blog"]
|
categories: ["Blog"]
|
||||||
tags: ["electronics"]
|
tags: ["electronics"]
|
||||||
images:
|
cover:
|
||||||
- "/static/img/headphone-fix/IMG_7505.jpg"
|
image: /static/img/headphone-fix/IMG_7505.jpg
|
||||||
---
|
---
|
||||||
A colleague offered a pair of Bern Bluetooth drop-in headphones to me fore free,
|
A colleague offered a pair of Bern Bluetooth drop-in headphones to me fore free,
|
||||||
with the catch being: _I had to fix them_
|
with the catch being: _I had to fix them_
|
||||||
@@ -60,7 +60,7 @@ search of `AIWI TI` (_as shown in the photograph_) resulted
|
|||||||
in [the following datasheet](http://www.ti.com/lit/ds/symlink/tpa6132a2.pdf)
|
in [the following datasheet](http://www.ti.com/lit/ds/symlink/tpa6132a2.pdf)
|
||||||
which verified that to be the case.
|
which verified that to be the case.
|
||||||
|
|
||||||
<center></center>
|

|
||||||
|
|
||||||
**Bingo!** Now knowing the pinout, I could use my trusty multimeter (_a Fluke
|
**Bingo!** Now knowing the pinout, I could use my trusty multimeter (_a Fluke
|
||||||
115_) to test continuity of the circuit from the known-good and the now
|
115_) to test continuity of the circuit from the known-good and the now
|
||||||
|
|||||||
@@ -14,11 +14,9 @@ from WordPress)
|
|||||||
<!--more-->
|
<!--more-->
|
||||||
# Disclaimer
|
# Disclaimer
|
||||||
|
|
||||||
{{< admonition warning "Out of Date" >}}
|
|
||||||
The information in this article is **out-of-date**. I am, and have been, using my
|
The information in this article is **out-of-date**. I am, and have been, using my
|
||||||
own fork of the [hugo-even-theme](https://gitlab.com/bdebyl/hugo-theme-even) on
|
own fork of the [hugo-even-theme](https://gitlab.com/bdebyl/hugo-theme-even) on
|
||||||
my [GitLab](https://gitlab.com/bdebyl) profile.
|
my [GitLab](https://gitlab.com/bdebyl) profile.
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,154 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Installing LineageOS Unofficial on Pixel 3a"
|
|
||||||
date: 2020-07-13
|
|
||||||
lastmod: 2020-07-13
|
|
||||||
draft: false
|
|
||||||
tags: ["android", "security", "hacking"]
|
|
||||||
categories: ["Tutorial"]
|
|
||||||
contentCopyright: true
|
|
||||||
hideHeaderAndFooter: false
|
|
||||||
images:
|
|
||||||
- "/static/img/lineageos-pixel3a/lineage-settings.png"
|
|
||||||
---
|
|
||||||
{{< admonition warning "Out of Date" >}}
|
|
||||||
This guide is now out of date since LineageOS officially supports the Pixel 3a,
|
|
||||||
see more here: <https://wiki.lineageos.org/devices/sargo/install>
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
In this post I aim to highlight my findings in deciding to go through the
|
|
||||||
process of installing LineageOS on my Pixel 3a. Currently, LineageOS does not
|
|
||||||
officially support the Pixel 3a. However, InvisibleK (Dan Pasanen) does host
|
|
||||||
updated versions of his unofficial LineageOS build for the Pixel 3a complete
|
|
||||||
with a custom recovery to utilize for this purpose!
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
{{< thumbgallery >}}
|
|
||||||
{{< thumb src="/static/img/lineageos-pixel3a/lineage-settings.png"
|
|
||||||
alt="Screenshot showing the LineageOS version and other LineageOS settings on the Pixel 3a" >}}
|
|
||||||
{{< thumb src="/static/img/lineageos-pixel3a/lineage-trust.png"
|
|
||||||
alt="Screenshot showing the LineageOS Trust feature" >}}
|
|
||||||
{{< /thumbgallery >}}
|
|
||||||
|
|
||||||
# Thank You
|
|
||||||
|
|
||||||
Before going on any further, I'd like to take a moment to give my sincere thanks
|
|
||||||
to InvisibleK (Dan Pasanen). Having to set up the entire custom build for Pixel
|
|
||||||
3a of LineageOS myself would add far more overhead in the overall simple task in
|
|
||||||
trying to get LineageOS to work on a Pixel 3a!
|
|
||||||
|
|
||||||
[**tl;dr**](#flash-custom-recovery)
|
|
||||||
|
|
||||||
# Preface
|
|
||||||
|
|
||||||
There are plenty of guides out there on how to install and set up ADB and
|
|
||||||
Fastboot on your host machine. For me, on Arch Linux, this was as simple as
|
|
||||||
running `pacman -S android-tools`. However, should you be on MacOS or Windows
|
|
||||||
you may have to find resources on how to go about this. I do not intend to go
|
|
||||||
over this here -- _sorry_
|
|
||||||
|
|
||||||
Additionally, this _guide_ also assumes the reader has some familiarity with ADB
|
|
||||||
and/or Fastboot.
|
|
||||||
|
|
||||||
# Source Files
|
|
||||||
|
|
||||||
If you, the reader, know what you're doing and simply just require the files
|
|
||||||
for your Pixel 3a they can be found here:
|
|
||||||
|
|
||||||
- <https://updater.invisiblek.org/sargo>
|
|
||||||
|
|
||||||
# Installation
|
|
||||||
|
|
||||||
{{< admonition warning "Warning!" >}}
|
|
||||||
If it isn't abundantly clear by now, be aware that you **will be destroying all
|
|
||||||
the data currently on your Pixel 3a** in the process of installing LineageOS on
|
|
||||||
your device! Stop now and back up any files, 2FA codes, or other prior to
|
|
||||||
proceeding.
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
## Note about TWRP
|
|
||||||
|
|
||||||
As of writing this, TWRP[^1] (_a custom recovery commonly used in custom OS
|
|
||||||
installation_) does not support Android 10. This would have been the preferred
|
|
||||||
for a custom recovery, though not strictly required. Since we will be installing
|
|
||||||
LineageOS 17.1 for Android 10 we cannot use TWRP.
|
|
||||||
|
|
||||||
## Flash to Stock
|
|
||||||
|
|
||||||
Google is kind enough to provide a variety of versions of the stock images for
|
|
||||||
the Pixel devices. In my process of installing LineageOS, as it will be on
|
|
||||||
Android 10, I made sure to flash to the latest stock version of Pixel 3a Android
|
|
||||||
10. Do note that the versions are listed in reverse order, with the latest being
|
|
||||||
found in the bottom-most row.
|
|
||||||
|
|
||||||
- <https://developers.google.com/android/images>
|
|
||||||
|
|
||||||
Additionally, Google provides a helper script `flash-all` that I highly
|
|
||||||
recommend running as-is to flash your Pixel 3a to stock. This can take a few
|
|
||||||
minutes to complete.
|
|
||||||
|
|
||||||
## Flash Custom Recovery
|
|
||||||
|
|
||||||
Using InvisibleK's build page, you'll find the required custom recovery image
|
|
||||||
for flashing found at the bottom of the list of zip files marked with a lone
|
|
||||||
"download" link.
|
|
||||||
|
|
||||||
Flash it via the following steps:
|
|
||||||
|
|
||||||
1. Reboot to recovery
|
|
||||||
|
|
||||||
```bash
|
|
||||||
adb reboot bootloader
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Unlock the bootloader if the 'Status' is locked:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
fastboot flashing unlock
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Flash the custom recovery (_make sure to replace `N` with the version you
|
|
||||||
downloaded, mine was '4'_)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
fastboot flash boot sargo-recovery-eng-N.img
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Boot the custom recovery either by re-entering recovery mode or fastboot --
|
|
||||||
make sure to wait for it to enter Android Recovery after
|
|
||||||
|
|
||||||
```bash
|
|
||||||
fastboot boot sargo-recovery-eng-N.img
|
|
||||||
```
|
|
||||||
|
|
||||||
## Install LineageOS
|
|
||||||
|
|
||||||
Now that the custom recovery is set up and booted into, we're ready to install LineageOS!
|
|
||||||
|
|
||||||
1. **Important!** Once in recovery, ensure to `Wipe data/factory reset` prior to
|
|
||||||
proceeding.
|
|
||||||
1. Select `Apply update from ADB`
|
|
||||||
1. ADB Sideload the version, if not latest, of LineageOS you want for your Pixel
|
|
||||||
3a
|
|
||||||
|
|
||||||
```bash
|
|
||||||
adb sideload lineage-17.1-2020517-UNOFFICIAL-sargo.zip
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Wait for installation to complete then select 'Reboot system now' from the
|
|
||||||
recovery menu
|
|
||||||
1. **Enjoy LineageOS!**
|
|
||||||
|
|
||||||
## Verification
|
|
||||||
|
|
||||||
Once in LineageOS, you can browse the settings to verify the installation and
|
|
||||||
set up Trust the preferred way. Personally, I chose to leave the defaults.
|
|
||||||
|
|
||||||
# Bugs / Issues
|
|
||||||
|
|
||||||
I plan to keep this list of bugs and issues I discover up to date, but this is
|
|
||||||
what I have encountered so far:
|
|
||||||
|
|
||||||
- WiFi calling does not seem to work
|
|
||||||
|
|
||||||
[^1]: [Team Win Recovery Project](https://twrp.me/)
|
|
||||||
@@ -67,10 +67,8 @@ It may be worth mentioning, to folks less familiar with `awk`, that the
|
|||||||
being piped into `sha1sum`. I discovered incorrect `sha1sum` outputs **without**
|
being piped into `sha1sum`. I discovered incorrect `sha1sum` outputs **without**
|
||||||
`FNR==1` resulting in a useless password check!
|
`FNR==1` resulting in a useless password check!
|
||||||
|
|
||||||
{{< admonition note Note >}}
|
|
||||||
`IFS=` would not have fixed the above newline issue, as the problem stems
|
`IFS=` would not have fixed the above newline issue, as the problem stems
|
||||||
from the output of `pass "$p"` and **not** the filenames.
|
from the output of `pass "$p"` and **not** the filenames.
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
That takes care of gathering our passwords, but we'll revisit this again in the
|
That takes care of gathering our passwords, but we'll revisit this again in the
|
||||||
next part.
|
next part.
|
||||||
@@ -117,10 +115,9 @@ it's weak (_i.e. "Exists in attack dictionary", "Too short", etc._) was to use
|
|||||||
well-documented or fully-fledged application to fully determine password
|
well-documented or fully-fledged application to fully determine password
|
||||||
strength though for my purposes it will be good enough (_I don't care to write
|
strength though for my purposes it will be good enough (_I don't care to write
|
||||||
my own version of this, yet.._).
|
my own version of this, yet.._).
|
||||||
{{< admonition note Note >}}
|
|
||||||
I made this part of the script **optional**, as not every user would want to
|
I made this part of the script **optional**, as not every user would want to
|
||||||
install `cracklib` on their system.
|
install `cracklib` on their system.
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
This addition was made in the following order:
|
This addition was made in the following order:
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ tags: ["libopencm3", "stm32", "tutorial"]
|
|||||||
categories: ["Tutorial"]
|
categories: ["Tutorial"]
|
||||||
contentCopyright: true
|
contentCopyright: true
|
||||||
hideHeaderAndFooter: false
|
hideHeaderAndFooter: false
|
||||||
images:
|
cover:
|
||||||
- "/static/img/stm32-examples/part0/stm32-basic-gpio-leds.jpeg"
|
image: /static/img/stm32-examples/part0/stm32-basic-gpio-leds.jpeg
|
||||||
---
|
---
|
||||||
One of the simplest projects to get started with the STM32 microcontroller
|
One of the simplest projects to get started with the STM32 microcontroller
|
||||||
series: turn on the lights!
|
series: turn on the lights!
|
||||||
@@ -17,21 +17,12 @@ series: turn on the lights!
|
|||||||
{{< thumb src="/static/img/stm32-examples/part0/stm32-basic-gpio-leds.jpeg"
|
{{< thumb src="/static/img/stm32-examples/part0/stm32-basic-gpio-leds.jpeg"
|
||||||
alt="Photo of STM32 discovery board with illuminated green and blue LEDs" >}}
|
alt="Photo of STM32 discovery board with illuminated green and blue LEDs" >}}
|
||||||
|
|
||||||
{{< admonition warning "Windows Users" >}}
|
|
||||||
This series of write-ups assumes the reader is on a Linux operating
|
|
||||||
system. Windows users _can_ utilize the [**Windows Subsystems for
|
|
||||||
Linux**](https://docs.microsoft.com/en-us/windows/wsl/install-win10) though your
|
|
||||||
mileage may vary!
|
|
||||||
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
# Straight to the Chase
|
# Straight to the Chase
|
||||||
|
|
||||||
For those that want to cut to the chase and save time, here is the full source
|
For those that want to cut to the chase and save time, here is the full source
|
||||||
code with friendly names to get you started:
|
code with friendly names to get you started:
|
||||||
|
|
||||||
{{< admonition note "Source Code" true >}}
|
|
||||||
|
|
||||||
```C
|
```C
|
||||||
#include <libopencm3/stm32/gpio.h>
|
#include <libopencm3/stm32/gpio.h>
|
||||||
#include <libopencm3/stm32/rcc.h>
|
#include <libopencm3/stm32/rcc.h>
|
||||||
@@ -50,8 +41,6 @@ int main(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
# Getting Started with libopencm3
|
# Getting Started with libopencm3
|
||||||
|
|
||||||
[libopencm3](https://github.com/libopencm3/libopencm3) is a very powerful,
|
[libopencm3](https://github.com/libopencm3/libopencm3) is a very powerful,
|
||||||
@@ -127,11 +116,9 @@ Makefile's variables of things you may want to change:
|
|||||||
|
|
||||||
# Explanation
|
# Explanation
|
||||||
|
|
||||||
{{< admonition info "Naming Convention" >}}
|
|
||||||
As a note to the reader: below I will not refer to the GPIO port or pins using
|
As a note to the reader: below I will not refer to the GPIO port or pins using
|
||||||
the `#define` friendly names from above. This is purely for the sake
|
the `#define` friendly names from above. This is purely for the sake
|
||||||
of clarity in hopes of avoiding confusion.
|
of clarity in hopes of avoiding confusion.
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
Although the source code is fairly simple, lets dive into it at least
|
Although the source code is fairly simple, lets dive into it at least
|
||||||
_somewhat_.
|
_somewhat_.
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ tags: ["libopencm3", "stm32", "tutorial"]
|
|||||||
categories: ["Tutorial"]
|
categories: ["Tutorial"]
|
||||||
contentCopyright: true
|
contentCopyright: true
|
||||||
hideHeaderAndFooter: false
|
hideHeaderAndFooter: false
|
||||||
images:
|
cover:
|
||||||
- "/static/img/stm32-examples/part1/blinky.gif"
|
image: /static/img/stm32-examples/part1/blinky.gif
|
||||||
---
|
---
|
||||||
After having reviewed [**Part 0**](/post/stm32-part0) of this series, we can now
|
After having reviewed [**Part 0**](/post/stm32-part0) of this series, we can now
|
||||||
explore controlling GPIO with the hardware timers! Other tutorials have used the
|
explore controlling GPIO with the hardware timers! Other tutorials have used the
|
||||||
@@ -26,8 +26,6 @@ timers and their associated GPIO ports with Alternate Function modes.
|
|||||||
For those that want to cut to the chase and save time, here is the full source
|
For those that want to cut to the chase and save time, here is the full source
|
||||||
code with friendly names to get you started:
|
code with friendly names to get you started:
|
||||||
|
|
||||||
{{< admonition note "Source Code" true >}}
|
|
||||||
|
|
||||||
```C
|
```C
|
||||||
#include <libopencm3/stm32/gpio.h>
|
#include <libopencm3/stm32/gpio.h>
|
||||||
#include <libopencm3/stm32/rcc.h>
|
#include <libopencm3/stm32/rcc.h>
|
||||||
@@ -79,8 +77,6 @@ int main(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
# Set up the GPIO
|
# Set up the GPIO
|
||||||
|
|
||||||
Assuming the reader is either familiar with GPIO setup for the STM32F0, or has
|
Assuming the reader is either familiar with GPIO setup for the STM32F0, or has
|
||||||
@@ -107,10 +103,8 @@ For accomplishing this, a few things need to happen:
|
|||||||
1. The desired GPIO pins need to be set to `GPIO_MODE_AF` in `gpio_mode_setup()`
|
1. The desired GPIO pins need to be set to `GPIO_MODE_AF` in `gpio_mode_setup()`
|
||||||
1. The alternate function mode number `GPIO_AFx` has to be set for the pins using `gpio_set_af()`
|
1. The alternate function mode number `GPIO_AFx` has to be set for the pins using `gpio_set_af()`
|
||||||
|
|
||||||
{{< admonition warning "Note for Different STM32Fx Microcontrollers" >}}
|
|
||||||
Review the datasheet for the specific **STM32Fx** microcontroller being
|
Review the datasheet for the specific **STM32Fx** microcontroller being
|
||||||
programmed, as the Alternate Function mappings may be _significantly_ different!
|
programmed, as the Alternate Function mappings may be _significantly_ different!
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
## GPIO Alternate Function Setup
|
## GPIO Alternate Function Setup
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ date: 2019-02-28
|
|||||||
lastmod: 2019-02-28
|
lastmod: 2019-02-28
|
||||||
categories: ["Blog"]
|
categories: ["Blog"]
|
||||||
tags: ["electronics"]
|
tags: ["electronics"]
|
||||||
images:
|
cover:
|
||||||
- "/static/img/thinkpad-usb-fix/DSC04781.jpg"
|
image: /static/img/thinkpad-usb-fix/DSC04781.jpg
|
||||||
---
|
---
|
||||||
From the moment that I first had my (_used_) ThinkPad X220, the bottom-right USB
|
From the moment that I first had my (_used_) ThinkPad X220, the bottom-right USB
|
||||||
port nearest to the SD card reader had been broken. The pad (_or bolster_) was
|
port nearest to the SD card reader had been broken. The pad (_or bolster_) was
|
||||||
|
|||||||
@@ -13,10 +13,8 @@ is done!
|
|||||||
|
|
||||||
<!--more-->
|
<!--more-->
|
||||||
|
|
||||||
{{< admonition info Info >}}
|
|
||||||
If the reader is unfamiliar with OpenPGP, it's suggested to check out the prior
|
If the reader is unfamiliar with OpenPGP, it's suggested to check out the prior
|
||||||
write-up on this blog: [**OpenPGP Best Practices (and Git)**](/post/gpg_best_practices_and_git/)
|
write-up on this blog: [**OpenPGP Best Practices (and Git)**](/post/gpg_best_practices_and_git/)
|
||||||
{{< /admonition >}}
|
|
||||||
|
|
||||||
# Importing Secret Keys
|
# Importing Secret Keys
|
||||||
|
|
||||||
|
|||||||
5
content/search.md
Normal file
5
content/search.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Search"
|
||||||
|
placeholder: Enter text to search..
|
||||||
|
layout: "search"
|
||||||
|
---
|
||||||
11
layouts/shortcodes/img.html
Normal file
11
layouts/shortcodes/img.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{{- $src := .Get "src" }}
|
||||||
|
{{- $sub := .Get "sub" -}}
|
||||||
|
{{- $alt := .Get "alt" -}}
|
||||||
|
<div class="thumbnail-container">
|
||||||
|
<a href="{{ $src }}"><div class="thumbnail">
|
||||||
|
<center><img src="{{ $src }}" alt="{{ $alt }}" title="{{ $alt }}"></center>
|
||||||
|
{{- if $sub -}}
|
||||||
|
<sub>{{ $sub }}</sub>
|
||||||
|
{{- end -}}
|
||||||
|
</div></a>
|
||||||
|
</div>
|
||||||
1
layouts/shortcodes/sub.html
Normal file
1
layouts/shortcodes/sub.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<center><sub><i>{{ .Inner | markdownify }}</i></sub></center>
|
||||||
15
layouts/shortcodes/thumb.html
Normal file
15
layouts/shortcodes/thumb.html
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{{- $src := .Get "src" }}
|
||||||
|
{{- $sub := .Get "sub" -}}
|
||||||
|
{{- $alt := .Get "alt" -}}
|
||||||
|
{{ if not .Parent }}
|
||||||
|
<div class="thumbnail-container">
|
||||||
|
{{ end }}
|
||||||
|
<a href="{{ $src }}"><div class="thumbnail">
|
||||||
|
<center><img src="{{ $src | replaceRE "^(.*static/img)/(.*)$" "$1/w_500/$2" }}" alt="{{ $alt }}" title="{{ $alt }}"></center>
|
||||||
|
{{- if $sub -}}
|
||||||
|
<center><sub>{{ $sub }}</sub></center>
|
||||||
|
{{- end -}}
|
||||||
|
</div></a>
|
||||||
|
{{ if not .Parent }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
3
layouts/shortcodes/thumbgallery.html
Normal file
3
layouts/shortcodes/thumbgallery.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="thumbnail-gallery">
|
||||||
|
{{.Inner}}
|
||||||
|
</div>
|
||||||
1
themes/papermod
Submodule
1
themes/papermod
Submodule
Submodule themes/papermod added at 9f1f414be8
Reference in New Issue
Block a user