Added Makefile, updated theme, using fork of even theme
This commit is contained in:
32
Makefile
Normal file
32
Makefile
Normal file
@@ -0,0 +1,32 @@
|
||||
# This Makefile was originally taken from https://github.com/alimac/alimac.io/
|
||||
# Website hostname, used to set:
|
||||
# - image and container names
|
||||
# - path to web root (in /tmp directory)
|
||||
WEBSITE=bdebyl.net
|
||||
|
||||
# Look up CloudFront distribution ID based on website alias
|
||||
DISTRIBUTION_ID=$(shell aws cloudfront list-distributions \
|
||||
--query 'DistributionList.Items[].{id:Id,a:Aliases.Items}[?contains(a,`$(WEBSITE)`)].id' \
|
||||
--output text)
|
||||
|
||||
default: run
|
||||
|
||||
build:
|
||||
hugo
|
||||
|
||||
run:
|
||||
hugo server
|
||||
|
||||
clean:
|
||||
@# Clean up existing generated site
|
||||
rm -rf public/
|
||||
|
||||
deploy: clean build
|
||||
@# Upload files to S3
|
||||
aws s3 sync --acl "public-read" --sse "AES256" public/ s3://$(WEBSITE)
|
||||
|
||||
cache:
|
||||
@# Invalidate caches
|
||||
aws cloudfront create-invalidation --distribution-id $(DISTRIBUTION_ID) --paths '/*'
|
||||
|
||||
.PHONY: build run deploy
|
||||
304
config.toml
304
config.toml
@@ -1,196 +1,168 @@
|
||||
# Tranquilpeak
|
||||
baseURL = "https://bdebyl.net/"
|
||||
languageCode = "en-us"
|
||||
defaultContentLanguage = "en-us"
|
||||
title = "bdebyl"
|
||||
theme = "hugo-tranquilpeak-theme"
|
||||
# disqusShortname = "basdb-site"
|
||||
# googleAnalytics = "UA-123-45"
|
||||
paginate = 7
|
||||
canonifyurls = true
|
||||
baseURL = "http://bdebyl.net/"
|
||||
languageCode = "en"
|
||||
defaultContentLanguage = "en"
|
||||
title = "A random assortment of my personal projects."
|
||||
preserveTaxonomyNames = true
|
||||
enableRobotsTXT = true
|
||||
enableEmoji = false
|
||||
theme = "even"
|
||||
# Syntax highlighting by Chroma. NOTE: Don't enable `highlightInClient` and `chroma` at the same time!
|
||||
pygmentsOptions = "linenos=table"
|
||||
pygmentsCodefences = true
|
||||
pygmentsUseClasses = true
|
||||
pygmentsCodefencesGuessSyntax = true
|
||||
hasCJKLanguage = true # has chinese/japanese/korean ?
|
||||
paginate = 5
|
||||
disqusShortname = "" # disqus_shortname
|
||||
googleAnalytics = "" # UA-XXXXXXXX-X
|
||||
copyright = "" # default: author.name
|
||||
|
||||
[permalinks]
|
||||
post = "/:year/:month/:slug/"
|
||||
[author] # essential
|
||||
name = "Bastian D."
|
||||
|
||||
[taxonomies]
|
||||
tag = "tags"
|
||||
category = "categories"
|
||||
archive = "archives"
|
||||
[sitemap] # essential
|
||||
changefreq = "weekly"
|
||||
priority = 0.5
|
||||
filename = "sitemap.xml"
|
||||
|
||||
[author]
|
||||
name = "Bastian de Byl"
|
||||
bio = "This site serves both as my portfolio and collections of personal projects."
|
||||
job = "Software Engineer"
|
||||
location = "New England"
|
||||
# Your profile picture
|
||||
gravatarEmail = "bastiandebyl@gmail.com"
|
||||
# picture = "https://cdn1.iconfinder.com/data/icons/ninja-things-1/1772/ninja-simple-512.png"
|
||||
|
||||
# Menu Configuration
|
||||
[[menu.main]]
|
||||
weight = 1
|
||||
identifier = "home"
|
||||
[[menu.main]] # config your menu
|
||||
name = "Home"
|
||||
pre = "<i class=\"sidebar-button-icon fa fa-lg fa-home\"></i>"
|
||||
weight = 10
|
||||
identifier = "home"
|
||||
url = "/"
|
||||
[[menu.main]]
|
||||
weight = 2
|
||||
identifier = "categories"
|
||||
name = "Categories"
|
||||
pre = "<i class=\"sidebar-button-icon fa fa-lg fa-bookmark\"></i>"
|
||||
url = "/categories"
|
||||
[[menu.main]]
|
||||
weight = 3
|
||||
identifier = "tags"
|
||||
name = "Tags"
|
||||
pre = "<i class=\"sidebar-button-icon fa fa-lg fa-tags\"></i>"
|
||||
url = "/tags"
|
||||
[[menu.main]]
|
||||
weight = 4
|
||||
identifier = "archives"
|
||||
name = "Archives"
|
||||
pre = "<i class=\"sidebar-button-icon fa fa-lg fa-archive\"></i>"
|
||||
url = "/archives"
|
||||
weight = 20
|
||||
identifier = "archives"
|
||||
url = "/post/"
|
||||
[[menu.main]]
|
||||
weight = 5
|
||||
identifier = "about"
|
||||
name = "About"
|
||||
pre = "<i class=\"sidebar-button-icon fa fa-lg fa-question\"></i>"
|
||||
url = "/#about"
|
||||
|
||||
[[menu.links]]
|
||||
weight = 1
|
||||
identifier = "github"
|
||||
name = "GitHub"
|
||||
pre = "<i class=\"sidebar-button-icon fa fa-lg fa-github\"></i>"
|
||||
url = "https://github.com/bdebyl"
|
||||
# [[menu.links]]
|
||||
# weight = 2
|
||||
# identifier = "stackoverflow"
|
||||
# name = "Stack Overflow"
|
||||
# pre = "<i class=\"sidebar-button-icon fa fa-lg fa-stack-overflow\"></i>"
|
||||
# url = "https://stackoverflow.com/users/636472/kakawait"
|
||||
|
||||
# [[menu.misc]]
|
||||
# weight = 1
|
||||
# identifier = "rss"
|
||||
# name = "RSS"
|
||||
# pre = "<i class=\"sidebar-button-icon fa fa-lg fa-rss\"></i>"
|
||||
# url = "/index.xml"
|
||||
name = "Tags"
|
||||
weight = 30
|
||||
identifier = "tags"
|
||||
url = "/tags/"
|
||||
[[menu.main]]
|
||||
name = "Categories"
|
||||
weight = 40
|
||||
identifier = "categories"
|
||||
url = "/categories/"
|
||||
|
||||
[params]
|
||||
# Customize date format use to render blog post date, categories and other
|
||||
# You must use date format used by Go Time package https://golang.org/pkg/time/
|
||||
# Months (not work with short month like "jan", "feb", etc) are translated if translation exists on i18n folders
|
||||
# Default format is: January 2, 2006
|
||||
dateFormat = "2 January 2006"
|
||||
version = "4.x" # Used to give a friendly message when you have an incompatible update
|
||||
debug = false # If true, load `eruda.min.js`. See https://github.com/liriliri/eruda
|
||||
|
||||
# Global keywords configuration. Following keywords will be add to every pages
|
||||
# keywords = ["development", "next-gen"]
|
||||
since = "2017" # Site creation time
|
||||
|
||||
# Syntax highlighter, possible choice between: "highlight.js" (recommanded) and "prism.js" (experimental)
|
||||
# You can comment it to disable syntax highlighting
|
||||
syntaxHighlighter = "highlight.js"
|
||||
# site info (optional)
|
||||
logoTitle = "bdebyl" # default: the title value
|
||||
keywords = ["bastian", "de byl","bdebyl"]
|
||||
description = "A random assortment of my personal projects."
|
||||
|
||||
# Hide sidebar on all article page to let article take full width to improve reading, and enjoy wide images and cover images. (true: enable, false: disable)
|
||||
clearReading = true
|
||||
# paginate of archives, tags and categories
|
||||
archivePaginate = 5
|
||||
|
||||
# Define categories will create hierarchy between parents: `categories = ["foo", "bar"]` will consider "bar" a sub-category of "foo".
|
||||
# If false it will flat categories.
|
||||
hierarchicalCategories = true
|
||||
# show 'xx Posts In Total' in archive page ?
|
||||
showArchiveCount = false
|
||||
|
||||
description = "bdebyl.net"
|
||||
# The date format to use; for a list of valid formats, see https://gohugo.io/functions/format/
|
||||
dateFormatToUse = "2006-01-02"
|
||||
|
||||
# Customization
|
||||
# Define the behavior of the sidebar
|
||||
# 1: Display extra large sidebar on extra large screen, large sidebar on large screen,
|
||||
# medium sidebar on medium screen and header bar on small screen and
|
||||
# extra large sidebar is swiped on extra large screen and large sidebar on all lower screen (default)
|
||||
# 2: Display large sidebar on large screen, medium sidebar on medium screen and
|
||||
# header bar on small screen and large sidebar is swiped
|
||||
# 3: Display medium sidebar on large and medium screen and header bar on small screen and
|
||||
# medium sidebar is swiped
|
||||
# 4: Display header bar on all screens, extra large sidebar is swiped on extra large screen and
|
||||
# large sidebar is swiped on all lower screens
|
||||
# 5: Display header bar on all screens and large sidebar is swiped on large screen
|
||||
# 6: Display header bar on all screens and medium sidebar is swiped
|
||||
sidebarBehavior = 1
|
||||
# show word count and read time ?
|
||||
moreMeta = false
|
||||
|
||||
# Your blog cover picture. I STRONGLY recommend you to use a CDN to speed up loading of pages.
|
||||
# There is many free CDN like Cloudinary or you can also use indirectly
|
||||
# by using services like Google Photos.
|
||||
# Current image is on AWS S3 and delivered by AWS CloudFront.
|
||||
# Otherwise put your image in folder `static/_images/` (development) or in `source/assets/images/` if you can't or don't want to build the theme,
|
||||
# and use relative url : `your-image.png`
|
||||
coverImage = "https://bdebyl.net/img/cover.png"
|
||||
# Syntax highlighting by highlight.js
|
||||
highlightInClient = false
|
||||
|
||||
# Display an image gallery at the end of a post which have photos variables (false: disabled, true: enabled)
|
||||
imageGallery = true
|
||||
# Some global options, you can also close or open something in front matter for a single post, see more information from `archetypes/default.md`.
|
||||
toc = true
|
||||
autoCollapseToc = false # Auto expand and collapse toc
|
||||
fancybox = true # see https://github.com/fancyapps/fancybox
|
||||
|
||||
# Display thumbnail image of each post on index pages (false: disabled, true: enabled)
|
||||
thumbnailImage = true
|
||||
# Display thumbnail image at the right of title in index pages (`right`, `left` or `bottom`)
|
||||
# Set this value to `right` if you have old posts to keep the old style on them
|
||||
# and define `thumbnailImagePosition` on a post to overwrite this setting
|
||||
thumbnailImagePosition = "bottom"
|
||||
# Automatically select the cover image or the first photo from the gallery of a post if there is no thumbnail image as the thumbnail image
|
||||
# Set this value to `true` if you have old posts that use the cover image or the first photo as the thumbnail image
|
||||
# and set `autoThumbnailImage` to `false` on a post to overwrite this setting
|
||||
autoThumbnailImage = true
|
||||
# mathjax
|
||||
mathjax = false # see https://www.mathjax.org/
|
||||
mathjaxEnableSingleDollar = false
|
||||
mathjaxEnableAutoNumber = false
|
||||
mathjaxUseLocalFiles = false # You should install mathjax in `yout-site/static/lib/mathjax`
|
||||
|
||||
# Your favicon path, default is "/favicon.png"
|
||||
# favicon = "/favicon.png"
|
||||
postMetaInFooter = true # contain author, lastMod, markdown link, license
|
||||
linkToMarkDown = false # Only effective when hugo will output .md files.
|
||||
contentCopyright = '' # e.g. '<a rel="license noopener" href="https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank">CC BY-NC-ND 4.0</a>'
|
||||
|
||||
# Header configuration
|
||||
# The link at the right of the header is customizable
|
||||
# You can add a link (as an icon) at the right of the header instead of the author's gravatar image or author's picture.
|
||||
# By default, author's gravatar or author's picture is displayed.
|
||||
# url: /#search
|
||||
# icon: search
|
||||
# class: st-search-show-outputs
|
||||
changyanAppid = "" # Changyan app id
|
||||
changyanAppkey = "" # Changyan app key
|
||||
|
||||
# Custom CSS. Put here your custom CSS files. They are loaded after the theme CSS;
|
||||
# they have to be referred from static root. Example
|
||||
# [[params.customCSS]]
|
||||
# href = "css/mystyle.css"
|
||||
livereUID = "" # LiveRe UID
|
||||
|
||||
# Custom JS. Put here your custom JS files. They are loaded after the theme JS;
|
||||
# they have to be referred from static root. Example
|
||||
# [[params.customJS]]
|
||||
# src = "js/myscript.js"
|
||||
baiduPush = false # baidu push
|
||||
baiduAnalytics = "" # Baidu Analytics
|
||||
baiduVerification = "" # Baidu Verification
|
||||
googleVerification = "" # Google Verification
|
||||
|
||||
# Display `Next` on left side of the pagination, and `Prev` on right side one.
|
||||
# If you set this value to `true`, these positions swap.
|
||||
# swapPaginator = true
|
||||
# Link custom CSS and JS assets
|
||||
# (relative to /static/css and /static/js respectively)
|
||||
customCSS = []
|
||||
customJS = []
|
||||
|
||||
# Sharing options
|
||||
# Comment and uncomment to enable or disable sharing options
|
||||
# If you wanna add a sharing option, read user documentation :
|
||||
# Tranquilpeak configuration > Theme configuration > sharing-options
|
||||
[[params.sharingOptions]]
|
||||
name = "Facebook"
|
||||
icon = "fa-facebook-official"
|
||||
url = "https://www.facebook.com/sharer/sharer.php?u=%s"
|
||||
# Display a message at the beginning of an article to warn the readers that it's content may be outdated.
|
||||
[params.outdatedInfoWarning]
|
||||
enable = false
|
||||
hint = 30 # Display hint if the last modified time is more than these days ago.
|
||||
warn = 180 # Display warning if the last modified time is more than these days ago.
|
||||
|
||||
[[params.sharingOptions]]
|
||||
name = "Twitter"
|
||||
icon = "fa-twitter"
|
||||
url = "https://twitter.com/intent/tweet?text=%s"
|
||||
[params.gitment] # Gitment is a comment system based on GitHub issues. see https://github.com/imsun/gitment
|
||||
owner = "" # Your GitHub ID
|
||||
repo = "" # The repo to store comments
|
||||
clientId = "" # Your client ID
|
||||
clientSecret = "" # Your client secret
|
||||
|
||||
[[params.sharingOptions]]
|
||||
name = "Google+"
|
||||
icon = "fa-google-plus"
|
||||
url = "https://plus.google.com/share?url=%s"
|
||||
[params.gitalk] # Gitalk is a comment system based on GitHub issues. see https://github.com/gitalk/gitalk
|
||||
owner = "" # Your GitHub ID
|
||||
repo = "" # The repo to store comments
|
||||
clientId = "" # Your client ID
|
||||
clientSecret = "" # Your client secret
|
||||
|
||||
# [params.header.rightLink]
|
||||
# class = ""
|
||||
# icon = ""
|
||||
# url = "/#about"
|
||||
[params.flowchartDiagrams]# see https://blog.olowolo.com/example-site/post/js-flowchart-diagrams/
|
||||
enable = false
|
||||
options = ""
|
||||
|
||||
# Customize link of author avatar in sidebar
|
||||
# [params.sidebar.profile]
|
||||
# url = "/#about"
|
||||
[params.sequenceDiagrams] # see https://blog.olowolo.com/example-site/post/js-sequence-diagrams/
|
||||
enable = false
|
||||
options = "" # default: "{theme: 'simple'}"
|
||||
|
||||
# Customize copyright value "© 2017 <CUSTOMIZATION>. All Rights Reserved"
|
||||
# [params.footer]
|
||||
# copyright = "<a href=\"https://github.com/kakawait\">kakawait</a>"
|
||||
[params.busuanzi] # count web traffic by busuanzi
|
||||
enable = false
|
||||
siteUV = false
|
||||
sitePV = false
|
||||
pagePV = false
|
||||
|
||||
[params.reward]
|
||||
enable = false
|
||||
|
||||
[params.social]
|
||||
a-email = "mailto:bastiandebyl@gmail.com"
|
||||
g-github = "https://github.com/bdebyl"
|
||||
m-instagram = "https://instagram.com/bastian.remi"
|
||||
n-gitlab = "https://gitlab.com/bdebyl"
|
||||
|
||||
# See https://gohugo.io/about/hugo-and-gdpr/
|
||||
[privacy]
|
||||
[privacy.googleAnalytics]
|
||||
anonymizeIP = true # 12.214.31.144 -> 12.214.31.0
|
||||
[privacy.youtube]
|
||||
privacyEnhanced = true
|
||||
|
||||
# Uncomment these options to make hugo output .md files.
|
||||
#[mediaTypes]
|
||||
# [mediaTypes."text/plain"]
|
||||
# suffixes = ["md"]
|
||||
#
|
||||
#[outputFormats.MarkDown]
|
||||
# mediaType = "text/plain"
|
||||
# isPlainText = true
|
||||
# isHTML = false
|
||||
#
|
||||
#[outputs]
|
||||
# home = ["HTML", "RSS"]
|
||||
# page = ["HTML", "MarkDown"]
|
||||
# section = ["HTML", "RSS"]
|
||||
# taxonomy = ["HTML", "RSS"]
|
||||
# taxonomyTerm = ["HTML"]
|
||||
|
||||
141
content/post/archinstall.md
Normal file
141
content/post/archinstall.md
Normal file
@@ -0,0 +1,141 @@
|
||||
---
|
||||
title: "Installing ArchLinux with Full Disk Encryption (LUKS)"
|
||||
date: 2018-12-19T22:35:11-05:00
|
||||
categories: ["Tutorial"]
|
||||
tags: ["linux"]
|
||||
---
|
||||
This is a guide written on how to install Arch Linux using LUKS for disk encryption, and Systemd-boot as the bootloader.
|
||||
<!--more-->
|
||||
It is assumed that the reader has basic linux knowledge and understands that examples are given via output commands.
|
||||
The reader may always consult manpages, the [Arch Wiki](https://wiki.archlinux.org/), or other documentation to build a better understanding of the tools and methods used.
|
||||
|
||||
---
|
||||
|
||||
# Partitioning
|
||||
1. Create a partition scheme using partitioner of choice (e.g. `gdisk`, `fdisk`, `cgdisk`).
|
||||
- First partition should be EFI/boot partition at around 256MB+ (type: `ef00`)
|
||||
- Second partition should be Linux LVM partition using rest of disk space (type: `8e00`)
|
||||
1. Make the the EFI/boot partition FAT32 via `mkfs.fat -F32`
|
||||
|
||||
# Encryption
|
||||
1. Format the Linux LVM partition:
|
||||
```
|
||||
# cryptsetup luksFormat /dev/sdaN
|
||||
Enter passphrase:
|
||||
```
|
||||
**Note:** _Remember your passphrase! You will need this every time you boot your computer_
|
||||
1. Create a mapping for your Linux LVM (LUKS):
|
||||
```
|
||||
# cryptsetup open --type luks /dev/sdaN <map_name>
|
||||
```
|
||||
_Use whatever name you want. Ex. `lvm`, `volume`, etc._
|
||||
1. Create the physical volume, volume group, and logical volumes for `<map_name>` specified in the previous step:
|
||||
```
|
||||
# pvcreate /dev/mapper/<map_name>
|
||||
# vgcreate <volume_name> /dev/mapper/<map_name>
|
||||
```
|
||||
_Use whatever volume name you want. Ex. `volume`, `main`, `linux`, etc._
|
||||
```
|
||||
# lvcreate -L2G <volume_name> -n swap
|
||||
```
|
||||
_Select size for swap, if desired. Here we use `2G` for 2Gb._
|
||||
```
|
||||
# lvcreate -L16G <volume_name> -n root
|
||||
# lvcreate -l 100%FREE <volume_name> -n home
|
||||
```
|
||||
1. Specify and write the desired filesystems:
|
||||
```
|
||||
# mkfs.ext4 /dev/mapper/<volume_name>-root
|
||||
# mkfs.ext4 /dev/mapper/<volume_name>-home
|
||||
# mkswap /dev/mapper/<volume_name>-swap
|
||||
```
|
||||
|
||||
# Install Linux
|
||||
1. Mount the boot partition and logical volumes for installation:
|
||||
```
|
||||
# mount /dev/mapper/<volume_name>-root /mnt
|
||||
# mkdir /mnt/home
|
||||
# mkdir /mnt/boot
|
||||
# mount /dev/mapper/<volume_name>-home /mnt/home
|
||||
# mount /dev/sdaN /mnt/boot
|
||||
# swapon /dev/mapper/<volume_name>-swap
|
||||
```
|
||||
|
||||
1. Install the base system (_Assuming you have internet connectivity. Use `wifi-menu`, or other, to connect to the internet at this point._):
|
||||
```
|
||||
# pacstrap /mnt base base-devel
|
||||
```
|
||||
|
||||
# Set-up Linux Installation
|
||||
1. Generate the `fstab`:
|
||||
```
|
||||
# genfstab -p /mnt >> /mnt/etc/fstab
|
||||
```
|
||||
|
||||
1. Move into the installation:
|
||||
```
|
||||
# arch-chroot /mnt
|
||||
```
|
||||
|
||||
1. Configure `initramfs`:
|
||||
1. Edit `HOOKS` in `/etc/mkinitcpio.conf` using text editor of your choice (e.g. `vi`, `nano`, etc.). Move the `keyboard` hook before `filesystems`, and add `encrypt` and `lvm2` hooks **before** `filesystems`:
|
||||
```
|
||||
# egrep '^HOOKS' /etc/mkinitcpio.conf
|
||||
HOOKS=(base udev autodetect modconf block keyboard encrypt lvm2 filesystems fsck)
|
||||
```
|
||||
_Read the comment documentation on `HOOKS` in the document to find out more._
|
||||
|
||||
1. Generate `initramfs`:
|
||||
```
|
||||
# mkinitcpio -p linux
|
||||
```
|
||||
|
||||
1. Install a bootloader (e.g. `systemd-boot`, `grub`, `syslinux`, etc.):
|
||||
1. I will be using `systemd-boot`
|
||||
```
|
||||
# bootctl --path=/boot/ install
|
||||
```
|
||||
|
||||
1. Edit the loader configuration using a text editor of your choice:
|
||||
```
|
||||
# cat /boot/loader/loader.conf
|
||||
default arch
|
||||
timeout 3
|
||||
editor 0
|
||||
```
|
||||
|
||||
1. Create the loader entry for the default `arch` entry specified above (_You can edit this name if desired._). Use `blkid /dev/sdaN` to find the UUID of your crypt device, and recall the volume name you gave your device above (_`main` in example below_):
|
||||
```
|
||||
# cat /boot/loader/entries/arch.conf
|
||||
title Arch Linux
|
||||
linux /vmlinuz-linux.img
|
||||
initrd /initramfs-linux.img
|
||||
options cryptdevice=UUID=9f1fc119-b1dc-49d8-9a5a-686ad9e2fd2e:volume root=/dev/mapper/main-root quiet rw
|
||||
```
|
||||
|
||||
1. Create a root password using `passwd`.
|
||||
1. Set a hostname:
|
||||
```
|
||||
# echo "<your_hostname>" > /etc/hostname
|
||||
```
|
||||
|
||||
1. Set up the time:
|
||||
```
|
||||
# ln -fs /usr/share/zoneinfo/<continent>/<city/place> /etc/localtime
|
||||
# hwclock --systohc --utc
|
||||
```
|
||||
|
||||
1. Set the locale to `en_US`:
|
||||
```
|
||||
# sed -i 's/^\#en_US/en_US/' /etc/locale.gen
|
||||
# locale-gen
|
||||
# locale > /etc/locale.conf
|
||||
```
|
||||
|
||||
1. Done!
|
||||
```
|
||||
# exit
|
||||
# unmount -R /mnt
|
||||
# reboot
|
||||
```
|
||||
|
||||
@@ -3,9 +3,6 @@ title: "Make Your Ears Bern"
|
||||
date: 2018-01-11T04:26:57+01:00
|
||||
categories: ["Blog"]
|
||||
tags: ["electronics"]
|
||||
thumbnailImagePosition: top
|
||||
thumbnailImage: "/img/headphone-fix/thumbnail.jpg"
|
||||
coverImage: "/img/headphone-fix/IMG_7518.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_
|
||||
|
||||
@@ -17,7 +14,7 @@ A colleague offered a pair of Bern Bluetooth drop-in headphones to me fore free,
|
||||
|
||||
Past mistakes have taught me to be gentle and patient when it comes to taking things apart. This was no exception either. After looking over the unit on each side, I figured the only way *in* was lifting the mesh cover off. So I went at it, carefully, with a pair of tweezers. I worked my way around the edge and wedged the mesh upwards.
|
||||
|
||||
{{< image classes="fancybox clear center nocaption" src="/img/headphone-fix/IMG_7505.jpg" >}}
|
||||

|
||||
|
||||
# Okay, Maybe Turn It On
|
||||
|
||||
@@ -27,8 +24,11 @@ Now that the problematic speaker side was successfully opened without any damage
|
||||
|
||||
I played a song via smartphone on the speakers. The result was as expected: _the right speaker put out no sound._ I checked the known-good left speaker using my **Rigol 1074Z** oscilloscope. This may not have been entirely necessary, but I wanted to find out what to expect when troubleshooting the right channel.
|
||||
|
||||
{{< image classes="fancybox fig-50" group="turniton" src="/img/headphone-fix/IMG_7506.jpg" title="Left Speaker" >}}
|
||||
{{< image classes="fancybox clear fig-50 right" group="turniton" src="/img/headphone-fix/IMG_7511.jpg" title="Right Speaker">}}
|
||||
### Left Speaker
|
||||

|
||||
|
||||
### Right Speaker
|
||||

|
||||
|
||||
Knowing what to expect on the oscilloscope, I hooked up the probe to the right, problematic, speaker. The result was much different, indicating either noise or an open circuit. It may be worth mentioning that the right speaker was disconnected at this point in time to ease the troubleshooting process.
|
||||
|
||||
@@ -38,15 +38,15 @@ Knowing what to expect on the oscilloscope, I hooked up the probe to the right,
|
||||
|
||||
Lucky for me the PCB pads were labeled -- even better `SPKL+` (_left_) and `SPKR+` (_right_) were easy to find.
|
||||
|
||||
{{< image classes="fancybox clear center" src="/img/headphone-fix/IMG_7507.jpg" >}}
|
||||

|
||||
|
||||
Outside of the bluetooth board hidden under the piece of tape, there's not a whole lot going on in the circuit. It was my guess that the visible surface mount QFN chip was most likely the op-amp used for the speakers. A quick Google 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.
|
||||
|
||||
{{< image classes="clear center" src="/img/headphone-fix/TPA6132A2.png" title="TPA6132A2 QFN Pinout" >}}
|
||||
<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 known-bad speaker traces back to the `OUTL` and `OUTR` outputs of the amplifier.
|
||||
|
||||
{{< image classes="fancybox clear center" src="/img/headphone-fix/IMG_7514.jpg" >}}
|
||||

|
||||
|
||||
Removing the board from the housing required a bit of finesse. I didn't want to bother desoldering the left speaker connections to make removal easier. So, with a bit of gentle back and forth I was able to get it the PCB out and inspect traces on the bottom side.
|
||||
|
||||
@@ -60,7 +60,7 @@ After a few minutes of scratching my head and repeatedly going over the datashee
|
||||
|
||||
Using the 3.5mm mini-jack's solder pads, I found continuity to be true from the chips left and right outputs to the conveniently accessible solder pads. _A bodge wire was in order_..
|
||||
|
||||
{{< image classes="fancybox clear center" src="/img/headphone-fix/IMG_7515.jpg" >}}
|
||||
!(/img/headphone-fix/IMG_7515.jpg)
|
||||
|
||||
# All's Well That Ends Well
|
||||
|
||||
@@ -68,6 +68,6 @@ Using the 3.5mm mini-jack's solder pads, I found continuity to be true from the
|
||||
|
||||
Again, using my trusty Fluke 115, I verified continuity from the chip's `OUTR` pin to `SPKR+`. Lo and behold it was now closed-circuit! I was very happy to see the expected waveform from the known-good left channel now also appearing on the right channel.
|
||||
|
||||
{{< image classes="fancybox clear center" src="/img/headphone-fix/IMG_7516.jpg" >}}
|
||||

|
||||
|
||||
At this point I quickly re-soldered the wires to the speaker and enjoyed music now coming into both ears!
|
||||
@@ -3,8 +3,6 @@ title: "Humble Beginnings"
|
||||
date: 2017-12-21T01:42:57-05:00
|
||||
categories: ["Blog"]
|
||||
tags: ["code"]
|
||||
thumbnailImagePosition: top
|
||||
thumbnailImage: "/img/humble-beginnings/main.png"
|
||||
---
|
||||
After running into too many road blocks I've decided to go with the [**Tranquilpeak**](https://github.com/kakawait/hugo-tranquilpeak-theme) theme for this site. Before this, I was really looking forward to using the [**Tracks**](https://github.com/ageekymonk/hugo-tracks-theme) theme (ported from WordPress)
|
||||
<!--more-->
|
||||
@@ -17,12 +15,12 @@ If you want a general overview, feel free to check out the relevant [commit](htt
|
||||
|
||||
Right off the bat I noticed the navigation bar seemed a bit off, to say the least:
|
||||
|
||||
{{< image classes="center" src="/img/humble-beginnings/header-problem.png" title="Navbar Issue" >}}
|
||||
<center></center>
|
||||
|
||||
The links showed as numbers and pointed to `/0`, `/1`, and `/2` respectively. These, of course, lead to 404s.
|
||||
|
||||
|
||||
{{< image classes="center" src="/img/humble-beginnings/404.png" title="404 Page - Should probably make this look a bit better, eventually..">}}
|
||||
<center></center>
|
||||
|
||||
This didn't seem like the intended behavior, so I kept digging. Eventually, I found out the problem lied in the usage of the `.Site.Sections` variable used in a loop to populare items in the page header.
|
||||
|
||||
@@ -55,7 +53,7 @@ Looking at other template files in the theme's layout, I stumbled on a chunk of
|
||||
|
||||
The original uses the `.Site.Sections` variable, which I replaced with `.Site.Params.navlinks`. **This** seemed like intended behavior as the user-defined `config.toml` nav links weren't ever utilized or populated anywhere on the site.
|
||||
|
||||
{{< image classes="center clear" src="/img/humble-beginnings/tracks-config.png" title="Nav Links from Tracks Theme config">}}
|
||||
<center></center>
|
||||
|
||||
I borrowed the code found in `layouts/partials/sidebar.html` (*which also never appears to be used*) to include the nav links and get my desired behavior:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user