Anyone have resources for porting ROMs? - Moto G4 Play Questions & Answers

I've been wanting to get into porting ROMs, although I'm not too sure how to go about it. I have a few in mind I'd like to attempt to bring to our device. Does anyone have any resources/links/videos on how to go about porting? Everything would be greatly appreciated

Which ROMs do you have in mind? I might be able to help.
P.S: You can look in the LineageOS porting instructions for our device, if that's going to help you!

proudlytm said:
Which ROMs do you have in mind? I might be able to help.
P.S: You can look in the LineageOS porting instructions for our device, if that's going to help you!
Click to expand...
Click to collapse
A few of the ones I've been thinking would be a good fit for this phone is the Pure Nexus Project, Slim7 (Want to get a fully working build of that going, love Slim7 haha), OmniRom, and lastly a MIUI port once I get the basics down.
I use macOS, but also have a virtual machine for both Windows 7 & 10 and Ubuntu and Fedora so any guides across any platforms help.

fireball0093 said:
A few of the ones I've been thinking would be a good fit for this phone is the Pure Nexus Project, Slim7 (Want to get a fully working build of that going, love Slim7 haha), OmniRom, and lastly a MIUI port once I get the basics down.
I use macOS, but also have a virtual machine for both Windows 7 & 10 and Ubuntu and Fedora so any guides across any platforms help.
Click to expand...
Click to collapse
I know different ROMs use different structures for device trees, but here's a guide to compiling Lineage 14.1 to the G4 Play. This guide is made for Ubuntu 14.04/15.04/16.04, but Fedora might be able to work as well as long as you can get the proper packages installed during the prerequisite steps:
http://wiki.lineageos.org/harpia_build.html
It may not help much with other ROMs, since I'm not sure if the other ROMs support using CM/Lineage based device trees to build, but this will give you the basic instructions on how to download source, get the proprietary blobs/device tree you need, and compile everything to a working zip.
As for actually making device trees for other ROMs to use during compilation, that I don't know myself, and was never really able to find out.

I build on Fedora. If you're using Fedora 25, use these steps to set up a build environment: https://gist.github.com/sultanqasim/09f19221c67c71edd099eb86c6a92467

Related

[DEV] MultiROM WIP discussion [flounder][arm64]

I thought I'd post here my (and the people who helped me) progress on porting MultiROM to the HTC Nexus 9.
Contributors (so far, tell me if I miss anyone)
@Bogdacutu for his port of MultiROM on the Shield Tablet (The arm stuff)
@USBhost for testing as well as helping with the patch (patch is still WIP, more on this later)
@Tasssadar for MultiROM all together
@Unjustified Dev for his influence
Progress
Working: Multirom TWRP has been successfully compiled for flounder and has working ADB and MTP.
Partially Working WIP: MultiROM boot selector source has been ported to work with arm64. The multirom boot selector compiles for flounder in zip format and launches at device boot. However, touch does not work and there is no ADB at the moment.
Not Working WIP: The kexec hardboot patch currently does not work so the Nexus 9 is currently unable to boot another ROM other than the primary one.
Source
All sources can be found here (I know some of them may not work and may be a little messy but this is still a work in progress)
Device Tree
Kernel
MultiROM
MultiROM TWRP
Building Notes
I compile this with the CyanogenMod Device Tree. Instructionsfor building multirom can be found on the multirom wiki found here
Note: adbd and kexec-tools need to be replaced with these versions that are arm64 compatible
adbd kexec-tools
If you would like to contact me on hangouts about this, please PM me your Gmail.
Reserved
One more
I might have found a repository that may help us out with the kexec hardboot patch on arm64.
There are many commits here that relate to kexec on arm64
Very glad to hear!! Sooper work :thumbup::thumbup: :beer:
This may also pose useful for the arm64 instructions
...
Looks like kexec-tools may need to have a lot of changes for arm64.
There are the changes made on a more recent version or android tools (not the one for android/multi-rom). I think this commit may be helpful but changes would have to be made.
Re-based many of the repositories on MR64 the other day. Now I need to test....
Also, the kexec tools function for flounder is completely re-written so maybe kexec will work?
I'll have to try to test when I have a lot of free time...
Is this going to work to get Linux kexecboot working? I really would like to have Linux running natively on this tablet....
Any updates on the project?
Any news on this, hoping for developments so that progress can be made for oneplus2 and multirom?
Thanks
Hello, and whether support for Nexus 9?
@Hashbang173
What's the status of this ?
omerjerk said:
@Hashbang173
What's the status of this ?
Click to expand...
Click to collapse
I have tabled development for this until further notice.
Hashbang173 said:
I have tabled development for this until further notice.
Click to expand...
Click to collapse
Is there any deving goin on on this? I think its way too hard. kexec isnt x64 compatible. (The binary itself isnt. How will youll port hardboot ) First we will have to add x64 support to that. I have seen your commits. That isnt x64 supported too.
Please update me on this, im building on op2 if this works. Thanks <3
regalstreak said:
Is there any deving goin on on this? I think its way too hard. kexec isnt x64 compatible. (The binary itself isnt. How will youll port hardboot ) First we will have to add x64 support to that. I have seen your commits. That isnt x64 supported too.
Please update me on this, im building on op2 if this works. Thanks <3
Click to expand...
Click to collapse
I'm no dev but could this be helpful for kex ec on ARM64? https://www.spinics.net/lists/arm-kernel/msg462969.html
Hashbang173 said:
I have tabled development for this until further notice.
Click to expand...
Click to collapse
I know you've put this project on hold for the time being, but I would like to jump in on this dev-tastic venture. I got a Nexus 9 (LTE) for Christmas*, and wanted to let you know that you don't have to bear the burden of building/testing/debugging/etc. all by yourself. I am fairly well versed in the mechanics of MultiROM, and have been (and still am) a user of MR on my Nexus 7 (2013) since v28 . . and honestly, without MR on my Nexus 7, I probably wouldn't have the pen. testing abilities that have enabled me to offer those additional services to my clients (i.e., security consultation, data breach prevention, etc.).
My point is that I owe a lot to Tasssadar and the "MultiROM for Android" concept in general, so I am happy to give back in any way that I can.
The Nexus 9 has been my dream Android device ever since the rumor mill was buzzing with notions of a Nexus tablet with an ARM v8 (ARM64) based Tegra variant!!
Let me know if/when you wanna get this thing off the ground again, and I'll make myself available as much as possible.
FULL DISCLOSURE: Although I am fairly versed regarding MultiROM and it's mechanics (kexec-hardboot, modifications to TWRP, etc.), I don't have much experience when it comes to ARM v8. However, I am pretty fluent regarding desktop x64 programming applications and coding, so it shouldn't be too hard for me to wrap my head around this whole ARM v8, 64-Bit SoC/MoP revolution. If you (or anyone who knows) could fill me in on the challenges we are facing regarding kexec and hardboot in a 64-bit scenario, that'd be swell. In the mean time, I will do my best to get up to speed regarding the repos & commits you have referenced/linked up to this point.
THANK YOU FOR ALL OF YOUR HARD WORK THUS FAR, AND LET'S GET 'ER DONE MY FRIENDS!!
:fingers-crossed:
*BEST . . CHRISTMAS . . PRESENT . . EVER!!!!!!
Thanks Mom!!
They have a Multirom version working for the Nexus 6P which is an arm64 device using the kexec method. Here is the link if it helps you devs.
http://forum.xda-developers.com/nexus-6p/development/mod-multirom-v33-beta-1-t3313291
rifraf1 said:
They have a Multirom version working for the Nexus 6P which is an arm64 device using the kexec method. Here is the link if it helps you devs.
http://forum.xda-developers.com/nexus-6p/development/mod-multirom-v33-beta-1-t3313291
Click to expand...
Click to collapse
yep, I ported it to clark already, maybe I'll try porting it to flounder in the future
Multirom for yureka aka tomato (64bit snapdragon 615) is also coming today with kexec-hardboot patch. Hope other devices also get this fast

{Q} Custom ROMS (AOSP/CM) for Galaxy A8 (SM-A800F)? Any possibility in Future??

Hello all
I was wondering if there will be AOSP/CM ROM for this device, not a single ROM is available and no dev is interested to work on such a great device.
Such a totally crap device, still stucked on 5.1.1 since launch, no dev is interested in the development either, where android n announced already, we are still waiting for Android M update, i wasted my money on such a **** device, will never buy a sammy mid range in future, m totally fed up with this
I think because there are few developer with that phone and they can't test their work. You can port ROMs such as CM to you phone by your self. There are tons of guides and forums. All u need is a linux OS (such as ubuntu, debian and others) and sources.
DeadSquirrel01 said:
I think because there are few developer with that phone and they can't test their work. You can port ROMs such as CM to you phone by your self. There are tons of guides and forums. All u need is a linux OS (such as ubuntu, debian and others) and sources.
Click to expand...
Click to collapse
Ok i want to port Resurrection Remix on my A8, i need a simplest guide for android build environment startup, using windows 10, with no knowledge about programming languages such as C++ etc etc which is required to be used on Linux OS, can you plz help me, i will install ubuntu OS on my laptop, but i am worried can i install two different os in one machine, i.e. Windows 10 & Ubuntu
shubham540 said:
Ok i want to port Resurrection Remix on my A8, i need a simplest guide for android build environment startup, using windows 10, with no knowledge about programming languages such as C++ etc etc which is required to be used on Linux OS, can you plz help me, i will install ubuntu OS on my laptop, but i am worried can i install two different os in one machine, i.e. Windows 10 & Ubuntu
Click to expand...
Click to collapse
yep, I'm on kali and I use windows 10 to play games, so the only thing is: take care when partitioning. After you installed ubuntu there is a bootloader called "GRUB" and there you can choose if you want to boot windows or linux

Port of lineageOS

Hello Guys,
Today I woke up with a new idea; I want to port LineageOS to the LG V20 version H990DS. I was tinkering with this idea for about one year, but never actually wanted to make the step. Until today. I used LineageOS and CyanogenMod since 2012.
The reason why I want to create the first port is because I have the time at the moment, so why not help the community? I do have four years of programming skills C/C++. Run Linux as daily driver etc... Do know how to use git, linux, autotools etc... The tricky part however is: I never compiled a Lineage OS rom from source and I don't think the compiling would be a problem, but the LG V20 H990DS isn't officially supported. My question is: Where do I start to program? How can I compile and build a working Lineage OS for the LG H990DS. Are there any good website I can read from?
I saw this:
https://www.youtube.com/watch?v=MGI3NSJFtKA&feature=youtu.be
https://forum.xda-developers.com/chef-central/android/how-to-build-lineageos-14-1-t3551484
http://www.lineageosrom.com/2017/01/how-to-build-lineageos-rom-for-any.html
https://www.reddit.com/r/LineageOS/comments/6iie9l/how_to_compile_lineage_os_141_for_unsupported/
https://www.reddit.com/r/LineageOS/comments/684qkp/help_noob_compile_lineageos/
So to make it easy: I want to program a working LineageOS for the LG H990DS, but don't have any understanding about where to start. I do have four years of programming skills, not so much, but know C and C++ well.
Thanks in advance,
Maurice
English isn't my native language, sorry for grammars.
someone help this man up.
Did you check the existing LineageOS thread?
https://forum.xda-developers.com/v20/development/dev-cm14-t3509953/post74550386#post74550386
If you want to help, I'd suggest asking him if there's anything you can do.
Thank you for your response. I do watch that thread, because I want lineageOS for the h990ds device. The problem however is that I don't want to jump right into the code. I want to know what I am doing with each line of code. At the moment I think I have to change some things in the kernel so that it can boot, but I don't know if that's true. And there is so many documentation about how to compile lineageOS, which I don't want to do. I want to program and compile lineageOS. Every tutorial skips the program parts and just compiles lineageOS.
So maybe a good programmer can give my some advice? Where to start and where can I find some documentation?
Best regards,
Maurice
Welcome!
First off, I recommend using Ubuntu 16.04 (I personally use 16.10 however). Be sure to follow the guide you linked from chef central carefully.
For the dual SIM variant, I don't believe any current source exists. Although with the similar hardware and if you have decent skills, you could get it going.
Take a look at the existing v20 trees:
V20-common: https://github.com/LineageOS/android_device_lge_v20-common
Msm8996-common: https://github.com/LineageOS/android_device_lge_msm8996-common
H918 (as a reference): https://github.com/LineageOS/android_device_lge_h918
Kernel: https://github.com/LineageOS/android_kernel_lge_msm8996
Vendor: https://github.com/TheMuppets/proprietary_vendor_lge
Those are the basics to check out. Now I did see someone converted the H918 tree to H990. Here's a link to that for reference: https://github.com/android-device-lge-h990/android_device_lge_h990
You will definitely need to make a custom defconfig in kernel sources. The device tree changes should be rather easy. You'll need to pull vendor files from stock and import the drivers and dts files from stock kernel source. If/when you get a working kernel and device trees there's a 99% chance you will need to Port other drivers and vendor files as stock files don't play nice in aosp. If I were you, I'd start looking through commit history on GitHub to see how the other devices we're brought up. That is how I learned everything.
Also, git will be your best friend when bringing up large projects, like kernel. Learn git, get comfortable with it. Cherry-picking and merging is what keeps us going.
Best of luck!
I suppose you could say there are dueling work-in-progress H990 trees since the other one is: https://github.com/x86cpu/android_device_lge_h990
The one you pointed to is mine. I was hoping for some collaboration with @x86cpu on there (in theory @x86cpu also has permissions to modify that repository, assuming I've set things up correctly). While the initial steps have been done, it is not finished! Some issues are left for getting LineageOS operational on H990 devices.
Of crucial note the modem fix in its current form is unacceptable to LineageOS (despite working). I've got two variants of one solution almost ready, but they're yet ready.
Thank you for your answer and I will look into it. I sure hope that I can help you some day, but first I want to understand the repository. After that I will help you both to code.
Really thank you and I will do my best to catch up with you.
As for the Ubuntu version. I personally use arch Linux (with plasma), because I like it more than Ubuntu. I don't think that's a problem and else I will compile the Ubuntu programs to arch. And I know my way around got. Use it for about 4 years now and now what merging/branching rebasing etc means and know how to use it.
@emdroidle I could help

Sailfish OS for the Samsung Galaxy S7

I doesn't have enougth rigth to post to roms, so will post here.
WARNING! Everything you do, you do at your own peril and risk. I do not bear any responsibility for your faulty devices.
Knox will tick. ROM in alpha and not suitable for every day use.​
Installation instructions:
1. Install TWRP
2. Reboot in TWRP (Menu unlock phone - Recovery)
3. Wipe -> Format Data -> write - yes -> Enter
4. adb push <LineageOS> /sdcard
5. adb push <SailfishOS> /sdcard
6. Into TWRP: Install <LineageOS>
7. Into TWRP: Install <SailfishOS>
8. Into TWRP: Install <Audio FIX>
9. Reboot in System
Enjoy!
Sailfish OS Android HAL based on Lineage OS 14.1.
Downloads:
TWRP for herolte
Lineage OS 14.1 for herolte
Sailfish OS 2.1.4.14 for herolte
Sailfish Galaxy S7 audio fix(based on work of painted.man)
Sources:
https://github.com/Driim
Build guide can be found here.
Problems:
1. WLAN worked partially(can't remember network to automatically connect after reboot)
2. Bluetooth not working
3. NFC not working
4. Fingerprint not working (Sailfish problem)
Debug:
In Ubuntu. Connect USB cable. telnet 192.168.2.15 2323 or ssh.
Changelog:
30.03.2018
Update to Sailfish OS 2.1.4.14
GSM calls fix
12.02.2018
Working mobile data and sms.
Great for a start! Have you tried flashing only the Sailfish ROM to see if it works without having to flash LineageOS?
CyanogenLover said:
Great for a start! Have you tried flashing only the Sailfish ROM to see if it works without having to flash LineageOS?
Click to expand...
Click to collapse
It's pointless, the Sailfish OS uses Lineage OS HAL layer to work with hardware, without Lineage OS it won't start.
Tried this. First off amazing job. I was trying to install Android apps but cant find android support on app store
dylanneve1 said:
Tried this. First off amazing job. I was trying to install Android apps but cant find android support on app store
Click to expand...
Click to collapse
I'm focused on hardware support. Android applications did not even look.
lSDriim said:
I'm focused on hardware support. Android applications did not even look.
Click to expand...
Click to collapse
Yeah you're right.
lSDriim said:
It's pointless, the Sailfish OS uses Lineage OS HAL layer to work with hardware, without Lineage OS it won't start.
Click to expand...
Click to collapse
Then you need to extract the components that make up the HAL layer. If you don't know how to do this, you could try asking around XDA or doing some web searching, but I'm afraid that I can't help you by actually doing it; I can only provide suggestions. However, since I'm quite interested, I'll stay subscribed to your post here.
---------- Post added at 04:39 PM ---------- Previous post was at 04:34 PM ----------
Please provide more screenshots!
CyanogenLover said:
Then you need to extract the components that make up the HAL layer. If you don't know how to do this, you could try asking around XDA or doing some web searching, but I'm afraid that I can't help you by actually doing it; I can only provide suggestions. However, since I'm quite interested, I'll stay subscribed to your post here.
---------- Post added at 04:39 PM ---------- Previous post was at 04:34 PM ----------
Please provide more screenshots!
Click to expand...
Click to collapse
I think you do not quite understand. I already extracted them and just wrote the version from which I extracted. So there are no Lineage OS on phone, only Sailfish OS and HAL components from Lineage OS 14.1(only proprietary components).
I update release and add new screenshots.
lSDriim said:
I think you do not quite understand. I already extracted them and just wrote the version from which I extracted. So there are no Lineage OS on phone, only Sailfish OS and HAL components from Lineage OS 14.1(only proprietary components).
Click to expand...
Click to collapse
Thanks for clearing that up. You probably should figure out how to merge the two packages together, so we don't have to flash two separate packages, one before the other. Also, see what you can find out about the remaining problems. Try to get other developers involved. Also, you can always Google, Yahoo, Bing, DuckDuckGo, Yandex, etc. anything you need help with. I find most solutions on the net.
CyanogenLover said:
Thanks for clearing that up. You probably should figure out how to merge the two packages together, so we don't have to flash two separate packages, one before the other. Also, see what you can find out about the remaining problems. Try to get other developers involved. Also, you can always Google, Yahoo, Bing, DuckDuckGo, Yandex, etc. anything you need help with. I find most solutions on the net.
Click to expand...
Click to collapse
Merging of two packets, it's question for Sailfish OS developers, because it's the only way to install Sailfish.
Some people work on solving problems, I also asked about this problems on sailfish porters irc channel. I write this thread to get other developers involved.
lSDriim said:
Merging of two packets, it's question for Sailfish OS developers, because it's the only way to install Sailfish.
Some people work on solving problems, I also asked about this problems on sailfish porters irc channel. I write this thread to get other developers involved.
Click to expand...
Click to collapse
Aren't you a developer?!? Just because you aren't an employee at Jolla doesn't mean you're not developing Sailfish! After all, isn't it opensource?
Admittedly though, I'm a novice too when it comes to developing OSes, however I'm still studying more programming languages. I'm interested in Java, Python, and C++, which may help in diagnosing problems with your build. As for actually applying it, I don't know how I could test it without messing up my S7 Edge.
CyanogenLover said:
Aren't you a developer?!? Just because you aren't an employee at Jolla doesn't mean you're not developing Sailfish! After all, isn't it opensource?
Admittedly though, I'm a novice too when it comes to developing OSes, however I'm still studying more programming languages. I'm interested in Java, Python, and C++, which may help in diagnosing problems with your build. As for actually applying it, I don't know how I could test it without messing up my S7 Edge.
Click to expand...
Click to collapse
Sailfish OS is open-source based, not all parts of Jolla is opened. But open part must be enougth to port new device.
To develop new Oses you need to know C(most of the system programming), C++ and Bash. You could try do S7 Edge port, but it better to have special phone fo this
I looked how can I separate Sailfish from Lineage OS and found Halium projects, that based on Ubuntu Touch. They start Android HAL in container, so system is more clean, now I am testing Halium build.
lSDriim said:
Sailfish OS is open-source based, not all parts of Jolla is opened. But open part must be enough to port new device.
Click to expand...
Click to collapse
So, what parts of the OS are opensource? Just curious; I know very little about Sailfish source code.
To develop new Oses you need to know C(most of the system programming), C++ and Bash. You could try do S7 Edge port, but it better to have special phone fo this
Click to expand...
Click to collapse
I'm learning C++, and I know some Bash. I might be able to diagnose problems if you'll output some log info. Try to be as descriptive as possible.
I looked how can I separate Sailfish from Lineage OS and found Halium projects, that based on Ubuntu Touch. They start Android HAL in container, so system is more clean, now I am testing Halium build.
Click to expand...
Click to collapse
Ah, Ubuntu Touch! That was a good venture. Too bad it didn't last. Let me know if it works better as the HAL for your project.
CyanogenLover said:
So, what parts of the OS are opensource? Just curious; I know very little about Sailfish source code.
Click to expand...
Click to collapse
Almost all except UI.
I'm learning C++, and I know some Bash. I might be able to diagnose problems if you'll output some log info. Try to be as descriptive as possible.
Click to expand...
Click to collapse
Bad idea, to much logs. If you not familiar with ofono, pulseaudio and etc, logs will not help.
lSDriim said:
Bad idea, to much logs. If you not familiar with ofono, pulseaudio and etc, logs will not help.
Click to expand...
Click to collapse
Not the entire logs! Just the ones with the errors that are produced from whatever needs fixing. Some commands that output constant log updates have filters. For instance, one way I diagnose a problem on Android is connect the device to my laptop, run "adb logcat *:E", repeat the action on the device that works improperly, then stop the output (usually CTRL + C) and scan the errors for the ones about my issue. If there is still too much to sift through, I try again, setting more filters. You can learn what filters you can apply by typing " adb logcat -h".
I don't know if adb works with Sailfish, but you might could discover logcat or something similar that will filter logs and output only the relevant information. As for what you just mentioned, I can diagnose issues with many Linux-based programs. I use Ubuntu. :victory:
As for the Wi-Fi not reconnecting; On the s7 atleast (probably more) there's a line in the build.prop "ro.securestorage.support"
Change that to the opposite of what it's on
solution for audio
I found solution for audio problem.
You have to edit /system/etc/audio_policy.conf:
- Delete AUDIO_OUTPUT_FLAG_DEEP_BUFFER flag on primary audio device
- Comment sections tms and playback_record
You also can pass argument config to pulseaudio-modules-droid and set location to your correct config file instead of editing vendor file.
continua el proyecto esta bien bueno 7u7
lSDriim said:
Almost all except UI.
Bad idea, to much logs. If you not familiar with ofono, pulseaudio and etc, logs will not help.
Click to expand...
Click to collapse
plss for s7 edge
Mujeeb64 said:
plss for s7 edge
Click to expand...
Click to collapse
I do not have Galaxy S7 Edge, but someone else can do it.

[INCOMPLETE] [NOT WORKING] Sailfish OS 2.1.4.13

I began some work on Sailfish OS, but as I only have the Moto Z as the daily driver, it is too tiresome and time consuming to continue this.
If someone is willing to give it a try to get it working, you are welcome to use my repos:
https://github.com/Loader009/droid-hal-griffin
https://github.com/Loader009/droid-hal-version-griffin
https://github.com/Loader009/droid-config-griffin
Kernel: https://github.com/Loader009/android_kernel_motorola_msm8996/tree/hybris-14.1
Devtree: https://github.com/Loader009/android_device_motorola_griffin/tree/hybris-14.1
My first test build (not booting - either it is in Sailfish OS but screen is frozen or it is frozen in bootloader):
https://androidfilehost.com/?fid=5862345805528066716
Here is a howto to get the building environment done (pretty hard to get it working)
(you will need to build Sailfish on your native OS, instead in the ubuntu environment
[because the ubuntu environment I used, did not support openjdk8, which is required for the devtree and kernel],
the packages [not the ROM/kernel] need to be build as in the howto described):
https://sailfishos.org/develop/hadk/
It looks like the howto has been updated since I used it last time.
edit: This FAQ is gonna be useful too: https://public.etherpad-mozilla.org/p/faq-hadk
If you need help, please use the IRC channel of that link right above.
In the topic of the IRC channel are some more useful links, be sure to read them before questioning others.
Good luck!
Loader009 said:
I began some work on Sailfish OS, but as I only have the Moto Z as the daily driver, it is too tiresome and time consuming to continue this.
If someone is willing to give it a try to get it working, you are welcome to use my repos:
Click to expand...
Click to collapse
Thanks, I have a spare Moto Z so I may give it a try. I still use SFOS (Sailfish X) at the moment.
mick3_de said:
Thanks, I have a spare Moto Z so I may give it a try. I still use SFOS (Sailfish X) at the moment.
Click to expand...
Click to collapse
I have a spare one too but i won't be able to help much except for testing. I'm very interested in SFOS but never got the chance to try it

Categories

Resources