noticket - updates
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,5 +1,5 @@
|
||||
*.lock
|
||||
flymd*
|
||||
public/
|
||||
resources/
|
||||
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%;
|
||||
}
|
||||
191
config.yaml
191
config.yaml
@@ -1,12 +1,12 @@
|
||||
# core
|
||||
baseURL: "https://bdebyl.net/"
|
||||
title: "Collection of useful, and useless information"
|
||||
theme: "even"
|
||||
baseURL: https://debyl.io/
|
||||
title: debyl.io
|
||||
theme: papermod
|
||||
enableEmoji: true
|
||||
|
||||
# settings
|
||||
paginate: 5
|
||||
defaultContentLanguage: "en"
|
||||
languageCode: "en"
|
||||
defaultContentLanguage: en
|
||||
languageCode: en
|
||||
buildDrafts: false
|
||||
canonifyURLs: true
|
||||
enableRobotsTXT: true
|
||||
@@ -15,10 +15,17 @@ markup:
|
||||
goldmark:
|
||||
renderer:
|
||||
unsafe: true
|
||||
highlight:
|
||||
noClasses: false
|
||||
# anchorLineNos: true
|
||||
# codeFences: true
|
||||
# guessSyntax: true
|
||||
# lineNos: true
|
||||
# style: monokai
|
||||
|
||||
# google analytics
|
||||
googleAnalytics: "UA-163975086-1"
|
||||
googleVerification: ""
|
||||
googleAnalytics: UA-163975086-1
|
||||
googleVerification:
|
||||
|
||||
# See https://gohugo.io/about/hugo-and-gdpr/
|
||||
privacy:
|
||||
@@ -30,63 +37,135 @@ privacy:
|
||||
# https://gohugo.io/content-management/syntax-highlighting/
|
||||
pygmentsCodefences: true
|
||||
pygmentsCodefencesGuessSyntax: true
|
||||
pygmentsOptions: ""
|
||||
pygmentsOptions:
|
||||
pygmentsUseClasses: true
|
||||
|
||||
author:
|
||||
name: "Bastian de Byl"
|
||||
|
||||
sitemap:
|
||||
changefreq: "weekly"
|
||||
filename: "sitemap.xml"
|
||||
changefreq: weekly
|
||||
filename: sitemap.xml
|
||||
priority: 0.5
|
||||
|
||||
outputs:
|
||||
home:
|
||||
- HTML
|
||||
- RSS
|
||||
- JSON
|
||||
|
||||
languages:
|
||||
en:
|
||||
languageName: English
|
||||
weight: 1
|
||||
taxonomies:
|
||||
category: categories
|
||||
tag: tags
|
||||
series: series
|
||||
menu:
|
||||
main:
|
||||
- name: "Home"
|
||||
- name: Archive
|
||||
url: archives
|
||||
weight: 5
|
||||
- name: Search
|
||||
url: search/
|
||||
weight: 10
|
||||
- name: Tags
|
||||
url: tags/
|
||||
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:
|
||||
favicon: "/static/img/favicon.ico"
|
||||
since: "2017"
|
||||
logoImage: "/static/img/logo.png"
|
||||
images:
|
||||
- "/static/img/logo-prev.png"
|
||||
logoTitle: "bdebyl"
|
||||
keywords: ["bastian", "de byl", "bdebyl", "bastian de byl"]
|
||||
description: "A random assortment of my personal projects."
|
||||
env: production # to enable google analytics, opengraph, twitter-cards and schema.
|
||||
description: Theme PaperMod - https://github.com/adityatelange/hugo-PaperMod
|
||||
author: Bastian de Byl
|
||||
# author: [Me, You] # multiple authors
|
||||
|
||||
# paginate of archives, tags and categories
|
||||
archivePaginate: 20
|
||||
# show 'xx Posts In Total' in archive page
|
||||
showArchiveCount: true
|
||||
# The date format to use; for a list of valid formats, see https://gohugo.io/functions/format/
|
||||
dateFormatToUse: "2006-01-02"
|
||||
# show word count and read time
|
||||
moreMeta: true
|
||||
# show "read more" link on post summary
|
||||
readMoreEnabled: false
|
||||
postMetaInFooter: true # contain author, lastMod, markdown link, license
|
||||
linkToMarkDown: true # Only effective when hugo will output .md files.
|
||||
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>'
|
||||
ShowAllPagesInArchive: true
|
||||
ShowBreadCrumbs: true
|
||||
ShowCodeCopyButtons: true
|
||||
ShowPageNums: true
|
||||
ShowPostNavLinks: true
|
||||
ShowReadingTime: true
|
||||
ShowRssButtonInSectionTermList: true
|
||||
ShowShareButtons: true
|
||||
ShowToc: false
|
||||
comments: false
|
||||
defaultTheme: dark
|
||||
disableSpecial1stPost: false
|
||||
disableThemeToggle: true
|
||||
displayFullLangName: true
|
||||
images: [images/papermod-cover.png]
|
||||
|
||||
social:
|
||||
a-email: "mailto:bastian@bdebyl.net"
|
||||
g-github: "https://github.com/bdebyl"
|
||||
m-instagram: "https://instagram.com/bastian.remi"
|
||||
n-gitlab: "https://gitlab.com/bdebyl"
|
||||
e-linkedin: "https://www.linkedin.com/in/bastian-de-byl-90171b187"
|
||||
profileMode:
|
||||
enabled: false
|
||||
|
||||
homeInfoParams:
|
||||
Title: >
|
||||
: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]
|
||||
|
||||
{{< sub >}}[**Public Key**](/static/pubkey.txt){{< /sub >}}
|
||||
[**Public Key**](/static/pubkey.txt)
|
||||
</center>
|
||||
|
||||
## 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
|
||||
categories: ["Blog"]
|
||||
tags: ["photography"]
|
||||
images:
|
||||
- "/static/img/aperture-study/f17-f40-comp.jpg"
|
||||
cover:
|
||||
image: /static/img/aperture-study/f17-f40-comp.jpg
|
||||
---
|
||||
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
|
||||
|
||||
@@ -27,16 +27,12 @@ better understanding of the tools and methods used.
|
||||
|
||||
## Partitioning with `fdisk`
|
||||
|
||||
{{% admonition warning Warning %}}
|
||||
This operation will destroy any data on the device, please ensure to back up
|
||||
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`).
|
||||
References specific to partitions will be stated as such (e.g. `/dev/sdN1`,
|
||||
`/dev/sdN2`)
|
||||
{{% /admonition %}}
|
||||
|
||||
1. Remove any existing partitions on the drive:
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ tags: ["emacs", "linux"]
|
||||
categories: ["Tutorial"]
|
||||
contentCopyright: true
|
||||
hideHeaderAndFooter: false
|
||||
images:
|
||||
- "/static/img/emacs-clang-libopencm3/header-completion.png"
|
||||
cover:
|
||||
image: /static/img/emacs-clang-libopencm3/header-completion.png
|
||||
---
|
||||
With some minor dependencies, it's fairly straightforward in setting up your
|
||||
Emacs workflow to include IntelliSense-like auto-completion!
|
||||
@@ -114,13 +114,11 @@ The above assumes that `libopencm3` is also places within the project
|
||||
directory
|
||||
{{< /sub >}}
|
||||
|
||||
{{< admonition warning Note >}}
|
||||
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
|
||||
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
|
||||
fairly uninvolved workaround.
|
||||
{{< /admonition >}}
|
||||
|
||||
## Example
|
||||
|
||||
|
||||
@@ -92,43 +92,34 @@ this via:
|
||||
- **ArchLinux:** `sudo update-ca-trust`
|
||||
- **Debian/Ubuntu, RHEL:** `sudo update-ca-certificates`
|
||||
|
||||
{{< admonition tip "CA Path" >}}
|
||||
On my system the full path to the CA certs is:
|
||||
|
||||
- `/etc/ca-certificates/extracted/cadir/sks-keyservers.net_CA.pem`
|
||||
|
||||
{{< /admonition >}}
|
||||
|
||||
Two following parameters should be added to your `~/.gnupg` configuration files:
|
||||
|
||||
### GnuPG Versions >2.1
|
||||
|
||||
{{< admonition note "gpg.conf" >}}
|
||||
|
||||
```text
|
||||
keyserver hkps://hkps.pool.sks-keyservers.net
|
||||
```
|
||||
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition note "dirmngr.conf" >}}
|
||||
|
||||
```text
|
||||
hkp-cacert /etc/ca-certificates/path/to/CA.pem
|
||||
```
|
||||
|
||||
{{< /admonition >}}
|
||||
|
||||
### GnuPG Versions <2.1
|
||||
|
||||
{{< admonition note "gpg.conf" >}}
|
||||
|
||||
```text
|
||||
keyserver hkps://hkps.pool.sks-keyservers.net
|
||||
keyserver-options ca-cert-file=/path/to/CA/sks-keyservers.netCA.pem
|
||||
```
|
||||
|
||||
{{< /admonition >}}
|
||||
|
||||
## *Optional* - Ensure keys refreshed through keyserver
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ date: 2018-01-11
|
||||
lastmod: 2019-01-16
|
||||
categories: ["Blog"]
|
||||
tags: ["electronics"]
|
||||
images:
|
||||
- "/static/img/headphone-fix/IMG_7505.jpg"
|
||||
cover:
|
||||
image: /static/img/headphone-fix/IMG_7505.jpg
|
||||
---
|
||||
A colleague offered a pair of Bern Bluetooth drop-in headphones to me fore free,
|
||||
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)
|
||||
which verified that to be the case.
|
||||
|
||||
<center></center>
|
||||

|
||||
|
||||
**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
|
||||
|
||||
@@ -14,11 +14,9 @@ from WordPress)
|
||||
<!--more-->
|
||||
# Disclaimer
|
||||
|
||||
{{< admonition warning "Out of Date" >}}
|
||||
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
|
||||
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**
|
||||
`FNR==1` resulting in a useless password check!
|
||||
|
||||
{{< admonition note Note >}}
|
||||
`IFS=` would not have fixed the above newline issue, as the problem stems
|
||||
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
|
||||
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
|
||||
strength though for my purposes it will be good enough (_I don't care to write
|
||||
my own version of this, yet.._).
|
||||
{{< admonition note Note >}}
|
||||
|
||||
I made this part of the script **optional**, as not every user would want to
|
||||
install `cracklib` on their system.
|
||||
{{< /admonition >}}
|
||||
|
||||
This addition was made in the following order:
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ tags: ["libopencm3", "stm32", "tutorial"]
|
||||
categories: ["Tutorial"]
|
||||
contentCopyright: true
|
||||
hideHeaderAndFooter: false
|
||||
images:
|
||||
- "/static/img/stm32-examples/part0/stm32-basic-gpio-leds.jpeg"
|
||||
cover:
|
||||
image: /static/img/stm32-examples/part0/stm32-basic-gpio-leds.jpeg
|
||||
---
|
||||
One of the simplest projects to get started with the STM32 microcontroller
|
||||
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"
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
{{< admonition note "Source Code" true >}}
|
||||
|
||||
```C
|
||||
#include <libopencm3/stm32/gpio.h>
|
||||
#include <libopencm3/stm32/rcc.h>
|
||||
@@ -50,8 +41,6 @@ int main(void) {
|
||||
}
|
||||
```
|
||||
|
||||
{{< /admonition >}}
|
||||
|
||||
# Getting Started with libopencm3
|
||||
|
||||
[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
|
||||
|
||||
{{< admonition info "Naming Convention" >}}
|
||||
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
|
||||
of clarity in hopes of avoiding confusion.
|
||||
{{< /admonition >}}
|
||||
|
||||
Although the source code is fairly simple, lets dive into it at least
|
||||
_somewhat_.
|
||||
|
||||
@@ -6,8 +6,8 @@ tags: ["libopencm3", "stm32", "tutorial"]
|
||||
categories: ["Tutorial"]
|
||||
contentCopyright: true
|
||||
hideHeaderAndFooter: false
|
||||
images:
|
||||
- "/static/img/stm32-examples/part1/blinky.gif"
|
||||
cover:
|
||||
image: /static/img/stm32-examples/part1/blinky.gif
|
||||
---
|
||||
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
|
||||
@@ -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
|
||||
code with friendly names to get you started:
|
||||
|
||||
{{< admonition note "Source Code" true >}}
|
||||
|
||||
```C
|
||||
#include <libopencm3/stm32/gpio.h>
|
||||
#include <libopencm3/stm32/rcc.h>
|
||||
@@ -79,8 +77,6 @@ int main(void) {
|
||||
}
|
||||
```
|
||||
|
||||
{{< /admonition >}}
|
||||
|
||||
# Set up the GPIO
|
||||
|
||||
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 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
|
||||
programmed, as the Alternate Function mappings may be _significantly_ different!
|
||||
{{< /admonition >}}
|
||||
|
||||
## GPIO Alternate Function Setup
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ date: 2019-02-28
|
||||
lastmod: 2019-02-28
|
||||
categories: ["Blog"]
|
||||
tags: ["electronics"]
|
||||
images:
|
||||
- "/static/img/thinkpad-usb-fix/DSC04781.jpg"
|
||||
cover:
|
||||
image: /static/img/thinkpad-usb-fix/DSC04781.jpg
|
||||
---
|
||||
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
|
||||
|
||||
@@ -13,10 +13,8 @@ is done!
|
||||
|
||||
<!--more-->
|
||||
|
||||
{{< admonition info Info >}}
|
||||
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/)
|
||||
{{< /admonition >}}
|
||||
|
||||
# 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