Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Audio setup quirks #6

Closed
huang-jy opened this issue Dec 1, 2021 · 47 comments
Closed

Audio setup quirks #6

huang-jy opened this issue Dec 1, 2021 · 47 comments

Comments

@huang-jy
Copy link

huang-jy commented Dec 1, 2021

Trying to get the audio working using the instructions on this repo.

I have downloaded the recovery image (I used the exact same one as the guide, just in case), unzipped and copied the files into the relevant locations as described on the instructions

I get multiple output devices and input devices showing:

  • Speaker - Built-in Audio

  • Headphones - Built-in Audio

  • HDMI 1 - Built-in Audio

  • HDMI 2 - Built in Audio

  • Internal Microphone - Built-in Audio

  • Headset Microphone - Built-in Audio

None of the audio devices work, and neither do the microphone options.

If I connect my earbuds via Bluetooth however, I do get the audio coming through the earbuds, so the sound subsystem seems to work. Repeated reboots did not seem to help.

I tried doing the "Power + Refresh" option, but doing as described in https://support.google.com/pixelbook/answer/9134769?hl=en-GB (Turn off machine, leave for 1min, then Power on while holding refresh). This unfortunately also didn't help.

Any ideas if I'm missing something?

Side Note: I did copy my home directory over from Ubuntu so perhaps something in there might be interfering somehow?

@huang-jy
Copy link
Author

huang-jy commented Dec 1, 2021

Looks like there is something in my home directory that is not playing well with the audio setup. I created a dummy user "Test" and logged in as that account. Audio and mic worked.

I'll keep this open until I find what is interfering.

@huang-jy
Copy link
Author

huang-jy commented Dec 2, 2021

Unfortunately I couldn't find what was causing it. I created a new user, copied all my files over bit by bit and audio still works after doing that.

I did find out that it might be something application-specific. Spotify loads without cutting out audio, but when I load other applications like QuiteRSS, Fluent Reader, Akregator, even Google Chrome the audio seems to break and will remain broken until I reboot. Firefox seems to be fine though.

@huang-jy
Copy link
Author

huang-jy commented Dec 2, 2021

Okay, some interesting findings. If I swap pipewire and pulseaudio back (i.e. sudo dnf swap --allowerasing pulseaudio pipewire-pulseaudio

The audio works and applications don't break it, but then I encounter the bug you raised in https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1452

@jmontleon
Copy link
Owner

jmontleon commented Dec 2, 2021

If you swap audio from pipewire to pulseaudio or vice versa be sure to open the audio mixer (pavucontrol) and choose the internal speakers for playback. I think when I move to pulseaudio it swaps to an HDMI output which doesn't do anything. Might be something silly like that and if it is let me know and I'll add a note in the audio section.

@jmontleon
Copy link
Owner

You should only have to do this once (unless you want to intentionally change sources). It will persist through reboots, etc.

@huang-jy
Copy link
Author

huang-jy commented Dec 2, 2021

Yes, the switch to pipewire was on the guide, which I did, and that's why I thought maybe that was related. By switching it back (e.g.doing the same command but switching the pipewire/pulseaudio options around) allowed the sound to work even when I loaded the apps that were causing it to cut out, but the mic has the known issue you have already raised.

@huang-jy
Copy link
Author

huang-jy commented Dec 2, 2021

Here's a video: https://photos.app.goo.gl/qf6U5agFVUngQuQj8

I'm playing Spotify then try to load Google Chrome and the audio cuts out

@jmontleon
Copy link
Owner

I can reproduce this easily with Chromium. All I have to do is start a youtube video in Firefox, then open Chromium and audio goes dead.

@huang-jy
Copy link
Author

huang-jy commented Dec 5, 2021

Yes, for some reason Firefox is fine, but when you load Chrome, Chromium or other apps, bang audio cuts out. Spotify works OK, so you can also do the same test with Spotify open while playing audio (like I did in the video), then open Chrome/Chromium.

I didn't find anything obvious in logs.

@jmontleon
Copy link
Owner

jmontleon commented Dec 5, 2021

Chromium and probably whatever other apps are breaking sound are launching the pipewire service, probably via the pipewire socket and that's what's breaking sound. You can do it just as well by launching a video in firefox then running systemctl --user start pipewire.

I was trying to disable the socket with systemctl --user disable pipewire.socket but it's still running when I start up. I have some other ideas, but had to step away. Starting to dig around some more.

@jmontleon
Copy link
Owner

If you run systemctl --user mask pipewire.socket and reboot how do things behave? With Firefox/Chrome this is working for me. Both play sound simultaneously without issue.

If you ever need/want to undo this systemctl --user unmask pipewire.socket will revert it.

I don't think this is a Pixelbook issue so much as a Pipewire one...

@jmontleon
Copy link
Owner

@huang-jy
Copy link
Author

huang-jy commented Dec 6, 2021

Thanks for the heads up, I will try that when I can get a chance.

I've also subscribed to the bug on redhat. Thanks for raising that wit the details. Lets see what happens.

@jmontleon
Copy link
Owner

Alright, got a response on the bug. Unmask the service, systemctl --user unmask pipewire.socket

Then run the commands:

sudo dnf swap --allowerasing pipewire-pulseaudio pulseaudio
sudo dnf swap wireplumber pipewire-media-session
sudo dnf swap pipewire-jack-audio-connection-kit jack-audio-connection-kit
sudo dnf remove pipewire-alsa

This works for me.

@huang-jy
Copy link
Author

huang-jy commented Dec 7, 2021 via email

@jmontleon
Copy link
Owner

Please feel free to reopen this or a new issue if it doesn't fix the problem. I've tested it and it's working for me. I've also updated the instructions in the README so future users won't hit the same problem.

@huang-jy
Copy link
Author

Thanks very much I will test that.

I'm also working on an Ansible playbook that will run your instructions if that is of interest?

@jmontleon
Copy link
Owner

Yes. A playbook would be great. Happy to help with it too. Feel free to submit a PR.

@huang-jy
Copy link
Author

huang-jy commented Dec 10, 2021 via email

@huang-jy
Copy link
Author

I just ran the new instructions manually (with the swapping of the connection-kit and wireplumber) and have noticed a few things:

  1. In the sound section, the internal speakers show as "Headphones" and no mic is detected:

image

  1. When shutting down, PackageKit seems to timeout while shutting down:
    image

This was run on a fresh Fedora install using defaults, with no new apps installed.

  1. Bluetooth does not seem to turn on. The toggle clicks on but nothing happens.

BTW, did you change the disk layout in any way when installing Fedora?

@huang-jy
Copy link
Author

Also, I don't appear to be able to reopen this issue

@jmontleon jmontleon reopened this Dec 11, 2021
@jmontleon
Copy link
Owner

If you only see headphones the pixelbook-alsa-ucm package isn't installed or something is otherwise wrong with alsa-ucm.

@jmontleon
Copy link
Owner

jmontleon commented Dec 11, 2021

Bluetooth sees devices for me. I can see a bunch of devices including my TV using blueberry and I have no issue with reboots hanging. For disk layout I typically just do /boot, /boot/efi, and root and swap on lvm, vfat for /boot/efi, and xfs for all else. Just my preference though.

@huang-jy
Copy link
Author

I'm going to wipe and try again. The packages, including alsa-ucm installed without errors, but I'll try again, both with the default btrfs and with the ext4, single partition I had in the original request which worked

@huang-jy
Copy link
Author

Did some tests using a fresh install (that uses the BTRFS filesystem)

  • Before running steps
    • Bluetooth: Working
    • Sound: None detected
    • Mic: None detected

image

  • Setup repo, dnf update, reboot:

    • Bluetooth: Working
    • Sound: None detected
    • Mic: None detected
    • Note: screen brightness needed to be adjusted at this point
  • Unzip latest recovery image, copy files, reboot

    • Bluetooth: Working
    • Sound: Found Headphones - Built-In Audio
    • Mic: None detected

image

  • sudo dnf swap --allowerasing pipewire-pulseaudio pulseaudio, reboot
    • Bluetooth: Working
    • Sound: Headphones - Built-In Audio
    • Mic: None found
  • sudo dnf swap wireplumber pipewire-media-session
    • Bluetooth: Working
    • Sound: Headphones - Built-In Audio
    • Mic: None found
  • sudo dnf swap pipewire-jack-audio-connection-kit jack-audio-connection-kit
    • Bluetooth: Working
    • Sound: Headphones - Built-In Audio
    • Mic: None found
  • sudo dnf remove pipewire-alsa
    • Bluetooth: Working
    • Sound: Headphones - Built-In Audio
    • Mic: None found
  • sudo dnf -y install pixelbook-alsa-ucm
    • Bluetooth: Working
    • Sound: Headphones - Built-In Audio
    • Mic: None found
  • Extract same recovery image from your instructions (not latest) and copy files, reboot
    • Bluetooth: Working
    • Sound: Headphones - Built-In Audio
    • Mic: None found

Will try now using a standard partition setup (no btrfs, no lvm(

@huang-jy
Copy link
Author

huang-jy commented Dec 12, 2021

Running the steps on a clean install on ext4 also had the same problem, and using the recovery image you used in your guide.

@huang-jy
Copy link
Author

huang-jy commented Dec 12, 2021

I just noticed, in #5 the updated kernel you issued to fix the "It looks like a problem occurred" was 5.15.6-202.pixelbook.fc35.x86_64, yet the version that is now being installed is 5.15.7-201.pixelbook.fc35.x86_64.

Could the new kernel version be doing something funny? I'm restoring the installation which we had the mic and audio working and then see if it offers an upgrade to the package (and then upgrade and see if it breaks)

Broken: Linux pixelbook-fedora 5.15.7-201.pixelbook.fc35.x86_64 #1 SMP Thu Dec 9 04:36:58 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Working: Linux pixelbook-fedora 5.15.6-202.pixelbook.fc35.x86_64 #1 SMP Sat Dec 4 15:24:47 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

@huang-jy
Copy link
Author

Restored the working installation, and yes, it does offer the upgrade

Last metadata expiration check: 0:00:28 ago on Sun 12 Dec 2021 12:46:55 GMT.
Dependencies resolved.
==============================================================================================================================================================================================
 Package                                        Architecture          Version                                        Repository                                                          Size
==============================================================================================================================================================================================
Installing:
 kernel                                         x86_64                5.15.7-201.pixelbook.fc35                      copr:copr.fedorainfracloud.org:jmontleon:pixelbook                  15 k
 kernel-core                                    x86_64                5.15.7-201.pixelbook.fc35                      copr:copr.fedorainfracloud.org:jmontleon:pixelbook                  37 M
 kernel-modules                                 x86_64                5.15.7-201.pixelbook.fc35                      copr:copr.fedorainfracloud.org:jmontleon:pixelbook                  33 M
 kernel-modules-extra                           x86_64                5.15.7-201.pixelbook.fc35                      copr:copr.fedorainfracloud.org:jmontleon:pixelbook                 2.1 M
....
Removing:
 kernel                                         x86_64                5.15.5-202.pixelbook.fc35                      @copr:copr.fedorainfracloud.org:jmontleon:pixelbook                  0
 kernel-core                                    x86_64                5.15.5-202.pixelbook.fc35                      @copr:copr.fedorainfracloud.org:jmontleon:pixelbook                 80 M
 kernel-modules                                 x86_64                5.15.5-202.pixelbook.fc35                      @copr:copr.fedorainfracloud.org:jmontleon:pixelbook                 32 M
 kernel-modules-extra                           x86_64                5.15.5-202.pixelbook.fc35                      @copr:copr.fedorainfracloud.org:jmontleon:pixelbook                2.0 M

And yes, after the upgrade completed, and rebooted, the microphone disappeared and I mysteriously had my internal speaker under "Headphone"

@jmontleon
Copy link
Owner

It's not the kernel. alsa-ucm was updated a few days ago and moved the configs into a conf.d directory. I'll fix the package and instructions. New package should be available in ~30 minutes.

@huang-jy
Copy link
Author

Awesome, will test with another clean installation when you're done.

Let me know the new alsa-ucm version number so I can make sure its picked up during my testing, thanks.

@jmontleon
Copy link
Owner

It just hit stable 3 days ago. Since you were reinstalling and updating you were probably first to see it. I see it this morning too; possibly also yesterday, but wasn't staring at it and my systems been powered on for a couple days, so likely wasn't affected until a reboot.

https://bodhi.fedoraproject.org/updates/FEDORA-2021-90ca1a9fed

@jmontleon
Copy link
Owner

jmontleon commented Dec 12, 2021

The way this works is if you have audio at all the firmware and kernel are working. It just can't figure out the layout without alsa ucm. kbl-r5514-5663-.conf and HiFi.conf help with that. These files were taken from the ChromeOS recovery image as well and lightly modified for ucm2 and to fix a problem.

If you run alsaucm reload at the moment you'll probably see an error. Running it with strace shows it trying to open the files in the new location.

Builds running, I'll post back in a minute when done. Just run sudo dnf clean all && sudo dnf -y update and a reboot should solve it. I'll post back in a minute when it's done.

@jmontleon
Copy link
Owner

Builds done, just installed the new package from the repo and should be ready to go.

@huang-jy
Copy link
Author

pixelbook-alsa-ucm version 1.0.0-4-fc35 is installed, but I still see the Headphones option. You mention copying configs. Do I need to do that on the local machine, or was that inside the pixelbook-alsa-ucm package you referenced

@jmontleon
Copy link
Owner

You should just have to reboot after installing it for the other options to appear

$ rpm -q alsa-utils pixelbook-alsa-ucm
alsa-utils-1.2.6-1.fc35.x86_64
pixelbook-alsa-ucm-1.0.0-4.fc35.noarch
$ rpm -ql pixelbook-alsa-ucm
/usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-
/usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/HiFi.conf
/usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/kbl-r5514-5663-.conf

As long as those files are in /usr/share/alsa/ucm2/conf.d you should be all set on a reboot.

$ uname -r
5.15.7-201.pixelbook.fc35.x86_64
$ pactl list cards
Card #0
	Name: alsa_card.platform-kbl_r5514_5663_max
	Driver: module-alsa-card.c
	Owner Module: 6
	Properties:
		alsa.card = "0"
		alsa.card_name = "kbl-r5514-5663-max"
		alsa.long_card_name = "Google-Eve-1.0"
		alsa.driver_name = "snd_soc_kbl_rt5663_rt5514_max98927"
		device.bus_path = "platform-kbl_r5514_5663_max"
		sysfs.path = "/devices/platform/kbl_r5514_5663_max/sound/card0"
		device.form_factor = "internal"
		device.string = "0"
		device.description = "Built-in Audio"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card"
	Profiles:
		HiFi: Default (sinks: 4, sources: 2, priority: 8000, available: yes)
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
	Active Profile: HiFi
	Ports:
		[Out] HDMI2: HDMI 2 (type: HDMI, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi
		[Out] HDMI1: HDMI 1 (type: HDMI, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi
		[Out] Headphones: Headphones (type: Headphones, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi
		[Out] Speaker: Speaker (type: Speaker, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi
		[In] Mic: Headset Microphone (type: Mic, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi
		[In] Internal Mic: Internal Microphone (type: Unknown, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi

You shouldn't see any errors if you run alsaucm reload either.

@huang-jy
Copy link
Author

That now works. I think I've also got the playbook working too. At the moment, just for audio (hence all these comments).

I'll fork, add and PR the changes

@huang-jy
Copy link
Author

PR has been raised, #8

@jmontleon
Copy link
Owner

Thanks for submitting this. It definitely makes it easier copying over the firmware files.

What about something like this:
https://github.com/jmontleon/pixelbook-fedora/blob/ansible/ansible/playbook.yml

Added a small README with requirements.
https://github.com/jmontleon/pixelbook-fedora/blob/ansible/ansible/README.md#requirements

Also added a note in the main README
https://github.com/jmontleon/pixelbook-fedora/blob/ansible/README.md

  • Eliminates the need for links by using uri and filters
  • Fails if it does not detect Fedora
  • Your issue with mount was because it alters the fstab and the device maps are gone on reboot, sorry naturally it can't remount them on reboot, not that you would want to. You can work around this by setting a bogus fstab file.
  • Your issue with copy was probably not using remote_src
  • Handles Copr configuration using the Copr module
  • Handles all tasks possible using appropriate modules rather than shelling out. The two exceptions where I don't know of any way to perform them with a module is dnf swap and kpartx.
  • Allows running as root; I can't think of a reason to force not running as root.
  • Takes the dnf update out of the shell script and puts it in the playbook after setting up the copr repo.
  • Throws everything in a block and runs cleanup commands regardless of success/failure.

Probably some other things, but those were the ones I could think of.

@huang-jy
Copy link
Author

What about something like this: https://github.com/jmontleon/pixelbook-fedora/blob/ansible/ansible/playbook.yml

Added a small README with requirements. https://github.com/jmontleon/pixelbook-fedora/blob/ansible/ansible/README.md#requirements

Typo: autoamte -> automate 😄

Also, I believe you need to add the hosts via the -i or it won't work (at least it didn't for me)
-K is needed to prompt for the user's sudo password before ansible starts, otherwise it will prompt using pkexec during the run

Ansible should also not be run as root (I did put that into the script which will refuse to run ansible if it detects the current user is root)

Also added a note in the main README https://github.com/jmontleon/pixelbook-fedora/blob/ansible/README.md

  • Eliminates the need for links by using uri and filters

Hah, I spent ages trying to find out the right way of doing that and ended up using the lynx hack 😆

  • Fails if it does not detect Fedora

Do you only provide packages for fc35? If so, you might also want to check for the fedora version too.

  • Your issue with mount was because it alters the fstab and the device maps are gone on reboot, sorry naturally it can't remount them on reboot, not that you would want to. You can work around this by setting a bogus fstab file.

That would make sense, it was hanging on processing loop0p3 on reboot, but weirdly, even, after unmounting and doing kpartx -dv to remove the device maps, it was still doing that

  • Your issue with copy was probably not using remote_src

But the files were local, not remote. 🤷

  • Handles Copr configuration using the Copr module

Awesome, didn't realise that was an option, didn't know copr was a module itself, I was hunting in the dnf module

  • Handles all tasks possible using appropriate modules rather than shelling out. The two exceptions where I don't know of any way to perform them with a module is dnf swap and kpartx.

Yes, I believe the lack of swap functionality has already been raised as far back as 2017: ansible/ansible#29857 (this was for the yum module)

  • Allows running as root; I can't think of a reason to force not running as root.

Generally should not run as root. Anything that requires root should use the become: true clause. As mentioned above, I put this in the starting script to prevent ansible being run as root. If you run as root, then, for example, the downloaded files will be owned by root and you won't be able to delete them unless you sudo.

Using root while running ansible also changes certain things inside ansible while running. For example, if you try to interact with ~/, that doesn't go to your home directory, but /root since you are root now.

If you run the ansible process as root, then you don't really need become

  • Takes the dnf update out of the shell script and puts it in the playbook after setting up the copr repo.
  • Throws everything in a block and runs cleanup commands regardless of success/failure.

Probably some other things, but those were the ones I could think of.

They are great additions, I'll need to incorporate those into my app setup playbook as well, some tricks I was not aware of.

@huang-jy
Copy link
Author

Also, I had to remove my ansible package (2.9) then install ansible-core (2.11) for your playbook to work. Otherwise, I get an error: no filter named 'split'

@huang-jy
Copy link
Author

huang-jy commented Dec 14, 2021

Some things I've found so far using your tweaked playbook:

  1. It downloads the recovery image each time, since you delete the temp folder at the end via the always block. This is fine if you have a fast connection, but not everyone wants to have to do that.
  2. The always block for removing the device maps always skips, because when unzipping, you set the register recovery_image_unarchive_results (
    register: recovery_image_unarchive_results
    ), but when checking in the always block, you look at recovery_image_unarchive_files
    when: recovery_image_unarchive_files is defined
    , which is not used or defined prior to this, so it will always skip

This is fixed by replacing as follows:

    - name: Remove device maps
      command: "kpartx -dv {{ tmp_dir.path }}/{{ recovery_image_unarchive_results.files | first }}"
      become: true
      when: recovery_image_unarchive_results is defined

Finally, I have also discovered that, since I've now started installing my apps, including some snaps, that kpartx no longer mounts to loop0p3 because it can't, due to some of my snaps taking those slots:

~$ df | grep loop
/dev/loop0           128       128         0 100% /var/lib/snapd/snap/bare/5
/dev/loop1         63104     63104         0 100% /var/lib/snapd/snap/authy/7
/dev/loop2         73728     73728         0 100% /var/lib/snapd/snap/bitwarden/59
/dev/loop3        101888    101888         0 100% /var/lib/snapd/snap/core/11993
/dev/loop5         63488     63488         0 100% /var/lib/snapd/snap/core20/1270
/dev/loop4         56832     56832         0 100% /var/lib/snapd/snap/core18/2253
/dev/loop6         84992     84992         0 100% /var/lib/snapd/snap/discord/130
/dev/loop7        168832    168832         0 100% /var/lib/snapd/snap/gnome-3-28-1804/161
/dev/loop9         66816     66816         0 100% /var/lib/snapd/snap/gtk-common-themes/1519
/dev/loop8        253952    253952         0 100% /var/lib/snapd/snap/gnome-3-38-2004/87
/dev/loop10         9472      9472         0 100% /var/lib/snapd/snap/k9s/151
/dev/loop12       110720    110720         0 100% /var/lib/snapd/snap/remmina/5114
/dev/loop11       172288    172288         0 100% /var/lib/snapd/snap/postman/149
/dev/loop14        44416     44416         0 100% /var/lib/snapd/snap/snapd/14295
/dev/loop13        49536     49536         0 100% /var/lib/snapd/snap/screenkey/2

So the easy way to handle this is the add to the README the steps must be done ideally before any apps are installed, especially snaps, or record the output from kpartx -av and take the third item and use that later on (probably safer too)

@jmontleon
Copy link
Owner

jmontleon commented Dec 14, 2021

Thanks. I changed the _files to _results to get rid of the _files.files stutter and forgot to fix the cleanup.

Interesting with the snaps. I'll see if I can use the output from the commad to do something. Fun.

Maybe I can do something to keep the archive too. If the playbook is pretty reliable hopefully people will only have to run it once.

I'm not sure on the need of a hosts file; might be the difference of hosts: all vs hosts: localhost? I could have something hanging around, but I don't recall creating anything.

There might be an easy way to fix the split issue too; maybe just .split... instaled of ... | split...

and -K.

@huang-jy
Copy link
Author

You can refer to the version I submitted.

If the archive already exists, it doesn't redownload it (it doesn't use a temporary folder though).

For extracting the zip file, it checks if the extracted file exists (via stat.path) and if it does, it assumes it has been unzipped, so doesn't need to unzip.

I guess you could do something similar with the get_url module. i.e. check if the zip file exists and if it does, assume you don't need to download it again.

Due to the way Ansible downloads, the file won't appear in the destination until the download is successful, so we can assume if the file is there, it's downloaded successfully.

@jmontleon
Copy link
Owner

jmontleon commented Dec 15, 2021

Alright, it will keep the zip file now; it will also guard against unpredictable loop devices I believe, add -K in the instructions; added check for distribution version and user, and I think I made the splits backwards compatible.

Let me know if you still see anything outstanding.

My /etc/ansible/ansible.cfg is entirely commented out except one line; I don't see any user configuration and I don't have to specify hosts will -i I don't believe. Might be the only thing outstanding to see if I have something hanging around that's making it work for me.

@huang-jy
Copy link
Author

Thanks, I will test tomorrow when I am off call (need the pixelbook today in case I get a callout 😄)

@huang-jy
Copy link
Author

Seems to be fine. I think we can close this ticket off. As for the PR, you can probably close that as you have incorporated the changes in the repo.

@jmontleon
Copy link
Owner

PR and improvements are merged. Thanks for your help with this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants