compiling CM7 for new device - Android

so I have a device and the source code for it and I am looking to compile CM7 for it but am wondering where to start, I can compile the kernel and the original build for it already from source but I want to use the source to port CM7
anyone know of a good place to start.

if Your phone has Android 2.3 try Port from Other Phone with This GUIDE
http://forum.xda-developers.com/showthread.php?t=1598713

cheqolada said:
if Your phone has Android 2.3 try Port from Other Phone with This GUIDE
http://forum.xda-developers.com/showthread.php?t=1598713
Click to expand...
Click to collapse
I tried that to start with and it did not work.

anyone else know anything?

KainXSS said:
anyone else know anything?
Click to expand...
Click to collapse
What phone do you have? Look for a device tree for that phone.

this isn't a phone its a zt280 tablet, after some searching I found a good base then ported to cyanogenmod 9 but the wifi does not work now and I think its due to the framework so I baksmali'd it and still cannot find a problem, on connecting to wifi ddms tells me that wlan0 could not connect to the interface, everything else on the tablet works properly though with this port.
any ideas

KainXSS said:
this isn't a phone its a zt280 tablet, after some searching I found a good base then ported to cyanogenmod 9 but the wifi does not work now and I think its due to the framework so I baksmali'd it and still cannot find a problem, on connecting to wifi ddms tells me that wlan0 could not connect to the interface, everything else on the tablet works properly though with this port.
any ideas
Click to expand...
Click to collapse
For me WiFi is related to drivers located in /system/lib/modules/
Sent from my HTC PH39100 using Tapatalk 2

the original rom had the wlan.ko in modules but the port had no modules folder soo, even putting it there did nothing and changing the supplicants in etc and bin

Related

[ROM] [WIP] Nexus One ICS ROM Source SDK

You can download the ROM files from here: http://goo.gl/ETPsm
Sorry I haven't had the time to package it for CWM. Hoping somebody here can do that for me.
Ta!
Care to elaborate, whats working, whats not...
Thanks, looking forward for this.
It should be everything included in this video
http://www.youtube.com/watch?v=dyPeT-ZUbBw&feature=youtube_gdata_player
Can't wait till someone compiles a ROM
how do I apply the update, you have any doc?
rosarafael said:
how do I apply the update, you have any doc?
Click to expand...
Click to collapse
Once someone compiles a ROM, it will be flashable via revovery.
rosarafael said:
how do I apply the update, you have any doc?
Click to expand...
Click to collapse
If you don't know how to flash it, then it's best for you to not even try.
It's an ALPHA (or even before an alpha) made from SDK image ported (quickly) to the Nexus One.
This means a lot of things are not working, it's not stable and can not be used as "main rom".
Just wait, "usable" ICS roms will come but now it's just too soon.
I asked him in a twitter. Here is answer:
Too many things to list that's not working. Here's what's working: touchscreen, hard buttons, battery indicator, accelerometer.
Click to expand...
Click to collapse
I ask, to see if there is any specific procedure, to work as many resources.
Unfortunately I do not know build a room, but, I try and install them, and if I can. Help improve.
With my comments.
Tks
Looking for devs to help in modifying gralloc.qsd8k.so to work in ICS. Please post below if ou can help.
The first problem is making a hwcomposer.qsdk8.so for Nexus One, this enables the hardware acceleration, needed for ICS.
I don't know, but I think it's actually possible without ICS source code
Just search for "hwcomposer android" on google
Sent from my GT-I9100 using XDA App
Oh! And you need to push EGL libs from Nexus One.
/system/egl
Sent from my GT-I9100 using XDA App
No. They are not compatible with the default gralloc module.
How did you get touchscreen to work? I am working on ICS port and wanted to know.
How can I make a zip package from your sources?
whooa. how you guys got touchscreen working please share
I'm looking for devs with NDK experience. PM me please if you can help.
Might have found a solution to the slow emulated graphics.
dr1337 said:
I'm looking for devs with NDK experience. PM me please if you can help.
Might have found a solution to the slow emulated graphics.
Click to expand...
Click to collapse
Sorry, I cant help, but if there is any other thing maybe i can...
Finally with a CM7.1 package i can boot this, but have you wifi working?
im working on this aswell.
DJ_Steve said:
im working on this aswell.
Click to expand...
Click to collapse
is ts working for you ?
Same question for touchscreen guys
I have it working on my HD2 but it has some stupid screen pointer I have to drag through the screen...

[CDMA][GSM] Help compile tun.ko without config.gz from the phone?

Hello,
I'm interested in compiling the tun.ko driver necessary for OpenVPN. However, I got stuck when trying to pull the config.gz file from /proc/ since Motorola didn't include it as an option.
I'm not great with all this and was just following a guide. Has anyone created a working .config file that I could use instead?
Thanks
Isn't any config included?
have you tried make oldconfig?
pajn said:
Isn't any config included?
have you tried make oldconfig?
Click to expand...
Click to collapse
I thought you needed the config.gz file (and the resultant .config) pulled from the phone to use make oldconfig?
Yes. But there should be one included or else we have to complain to Motorola.
The config is included in the binary so it have to be provided together with the source to follow GPL
The default configuration in the kernel source should be okay.
I'll compile that later for you
kholk said:
The default configuration in the kernel source should be okay.
I'll compile that later for you
Click to expand...
Click to collapse
Awesome thank you.
Emh, as the default kernel configuration says, the TUN/TAP interface driver is already included into the kernel. You don't need a module.
kholk said:
Emh, as the default kernel configuration says, the TUN/TAP interface driver is already included into the kernel. You don't need a module.
Click to expand...
Click to collapse
So you're saying even though I don't see tun.ko listed in the filesystem that I should be able to initiate TUN when configuring OpenVPN?
Thanks
try it,it working for my razr.
Kernal 2.6.35.7
View attachment tun_gb.ko.zip
Yes you're able to create a TUN/TAP device without tun.ko.
kholk said:
Yes you're able to create a TUN/TAP device without tun.ko.
Click to expand...
Click to collapse
My apologies. On my last phone I had to have a tun.ko module. My understanding after searching these past few days is most phones require it to be built. Is the RAZR different by having it built into the stock kernel?
By the way, finally got OpenVPN working today.
Thanks
Yup, it seems Moto wanted to include support for VPNs on stock!
What does this do? Sorry not familiar with this
Sent from my DROID RAZR using xda premium
blkghost22 said:
What does this do? Sorry not familiar with this
Sent from my DROID RAZR using xda premium
Click to expand...
Click to collapse
It lets you setup a VPN connection from your phone to another server. Basically, your phone encrypts all your data before going to Verizon, etc. then it arrives at (in my situation) my home router which decrypts it then sends the request out to the internet, and back to my phone encrypted and so on.
It's useful for:
1) I can access my home network from anywhere as if I were at home connected to my router over Wifi
2) If I'm out at a hotel or something and I want to use the Wifi to access a bank account or something without worrying about someone else on the network stealing my password.
Just to name a few.
Has anyone gotten cisco annyconnect working on the razr?

ICS Port

Hi I have found the way to port ICS to the galaxy players. :
http://www.freeyourandroid.com/guide/compile-ics
The problem is that I can't find the binaries for the galaxy player. Where I can find them?
arent they located in /system/bin?
Need root first though
(I would help out with this, but dont really know how to do it, and i dont have the player yet)
zaclimon said:
Hi I have found the way to port ICS to the galaxy players. :
http://www.freeyourandroid.com/guide/compile-ics
The problem is that I can't find the binaries for the galaxy player. Where I can find them?
Click to expand...
Click to collapse
Will this actually boot and run? If it's that "easy", then why don't more devices have ICS? If you can extract the binaries and cook up a rom, I would be happy to test it . Also, if I have time later this week, I'll try to follow those instructions and then post my results. If everything works on the first try, I'll be very surprised but not at all dissapointed . Thanks for sharing this
Dyskmaster said:
Will this actually boot and run? If it's that "easy", then why don't more devices have ICS? If you can extract the binaries and cook up a rom, I would be happy to test it . Also, if I have time later this week, I'll try to follow those instructions and then post my results. If everything works on the first try, I'll be very surprised but not at all dissapointed . Thanks for sharing this
Click to expand...
Click to collapse
Well maybe because people don't know how to do it. And as for the current rom the major problem is the hardware acceleration and the camera. Maybe We can find it (The binairies) at opensource.samsung.com
It should be easier than phones because you don't have to worry about not screwing with voice, data, and stuff like that. Just get it on and get all the apps working correctly. Radios are always the hardest.
I've also been triyng to compile the source for the player but i wasnt able to do so, the thing is that the source compiles fine with the pre-adjustments it comes with, i mean the androidboard.mk ( i think thats the name of the file not sure), but when i changed the variables for a armv5 build, which is the core of the device and the ones that comes in the same file on the opensource.samsung soource, it just doesnt compile and throws some kind of errors about some libraries that i didnt touched. i dont know what i had been doing wrong.
I Also found this video in which they show whats in every folder, and how to build and add packages from source to the build:
http://marakana.com/forums/android/general/269.html
This is a detail process description from the official android site to build from source, very similar like the one zaclimon found:
http://source.android.com/source/initializing.html
The source from samsung doesnt have all the drivers, just the alsa audio driver, i guess we gonna have to find a way to get the binaries like cyanogen did, maybe get some scripts they use and try to do it ourselves:
http://wiki.cyanogenmod.com/wiki/Sa...le_CyanogenMod_(Linux)#Copy_proprietary_files
it is done through the adb, but the thing is to get those files, maybe we could ask that fellow some help for this step, since he has the experience.
sodomywar said:
I've also been triyng to compile the source for the player but i wasnt able to do so, the thing is that the source compiles fine with the pre-adjustments it comes with, i mean the androidboard.mk ( i think thats the name of the file not sure), but when i changed the variables for a armv5 build, which is the core of the device and the ones that comes in the same file on the opensource.samsung soource, it just doesnt compile and throws some kind of errors about some libraries that i didnt touched. i dont know what i had been doing wrong.
I Also found this video in which they show whats in every folder, and how to build and add packages from source to the build:
http://marakana.com/forums/android/general/269.html
This is a detail process description from the official android site to build from source, very similar like the one zaclimon found:
http://source.android.com/source/initializing.html
The source from samsung doesnt have all the drivers, just the alsa audio driver, i guess we gonna have to find a way to get the binaries like cyanogen did, maybe get some scripts they use and try to do it ourselves:
http://wiki.cyanogenmod.com/wiki/Sa...le_CyanogenMod_(Linux)#Copy_proprietary_files
it is done through the adb, but the thing is to get those files, maybe we could ask that fellow some help for this step, since he has the experience.
Click to expand...
Click to collapse
The core is a ARMv7 right? because the hummingbird processor is a ARMv7. Maybe it did failed because of that? I found the gpu drivers from the opensource. Check in the kernel folder. If I can give you the gpu file if you want. Well tell me what files you are missing i'll find to give it to you. (Well I don't know how to program so I try do to my best.)
EDIT: Also its seem that to compile ICS is more difficult than the other versions. We do need ubuntu to extract the binaries right?
EDIT2: People are saying that it's easier to build from CM9 than from the source. It is right or it's the same thing?
http://forum.cyanogenmod.com/topic/38960-build-your-own-cm9ics-preview-on-ubuntu-and-perhaps-debian/
Galaxy S Phone
Shouldn't you just be able to modify a Galaxy S ICS port and take out the data and other stuff you don't need?
zaclimon said:
The core is a ARMv7 right? because the hummingbird processor is a ARMv7. Maybe it did failed because of that?
Click to expand...
Click to collapse
Well, i configured it with the files of the samsung source, and it said ARMv5, we need to know which one it is, probably faild because of libaries compatibilities for that architecture.
zaclimon said:
EDIT: Also its seem that to compile ICS is more difficult than the other versions. We do need ubuntu to extract the binaries right?
EDIT2: People are saying that it's easier to build from CM9 than from the source. It is right or it's the same thing?
Click to expand...
Click to collapse
Maybe it is easier than the official source, they modify the source and takes out some things that cellphones dont need 'cause the source it's made for all devices, so it could be smaller and easier to compile, i'm gonna try this port and let ya' know, it will take a while since the source it's huge
Would be great if a couple of us do it, if you can @zaclimon try it, you don't need ubuntu, if you know which libaries that command has (sudo apt-get install build-essential). I have debian and i compiled the source just fine, debian has a minimal installation (no X11) but to compile source you dont need anything else! Let me know if anyone else it's triyng we could excahnge some ideas!
sodomywar said:
Well, i configured it with the files of the samsung source, and it said ARMv5, we need to know which one it is, probably faild because of libaries compatibilities for that architecture.
Maybe it is easier than the official source, they modify the source and takes out some things that cellphones dont need 'cause the source it's made for all devices, so it could be smaller and easier to compile, i'm gonna try this port and let ya' know, it will take a while since the source it's huge
Would be great if a couple of us do it, if you can @zaclimon try it, you don't need ubuntu, if you know which libaries that command has (sudo apt-get install build-essential). I have debian and i compiled the source just fine, debian has a minimal installation (no X11) but to compile source you dont need anything else! Let me know if anyone else it's triyng we could excahnge some ideas!
Click to expand...
Click to collapse
how many MB or GB the source has because I can't exceed my download's limitations?
EDIT: I'm a linux newbie. Is Ubuntu is the same thing as debian? Because Ubuntu is debian based right?
EDIT2: nevermind I'll be using ubuntu
alltellmobile said:
Shouldn't you just be able to modify a Galaxy S ICS port and take out the data and other stuff you don't need?
Click to expand...
Click to collapse
I don't know if we can (we should ask permissions) but it's definitly possible.
zaclimon said:
EDIT: I'm a linux newbie. Is Ubuntu is the same thing as debian? Because Ubuntu is debian based right?
Click to expand...
Click to collapse
Yea Ubuntu should be pretty much the same.
Wish I knew how to program, because i would help out.
alltellmobile said:
Yea Ubuntu should be pretty much the same.
Wish I knew how to program, because i would help out.
Click to expand...
Click to collapse
You can help I follow the tutorials there:
http://www.freeyourandroid.com/guide/compile-ics
http://marakana.com/forums/android/general/269.html
Ok i was reading the first tutorial and got to the part about binaries for graphics acceleration; wouldn't we have to get ours before we compile it. Also i only have the US version of the galaxy player and if i made an image i couldn't test it because we don't have a custom recovery for ours.
alltellmobile said:
Ok i was reading the first tutorial and got to the part about binaries for graphics acceleration; wouldn't we have to get ours before we compile it. Also i only have the US version of the galaxy player and if i made an image i couldn't test it because we don't have a custom recovery for ours.
Click to expand...
Click to collapse
Oh that's true well you can try to port a custom recovery?
zaclimon said:
Oh that's true well you can try to port a custom recovery?
Click to expand...
Click to collapse
HaHa I'm not that good. that sounds way more complicated
hey guys, i've been following this thread and hopefully i can be of some help...
i'm currently in the process of pulling the system files from the original gingerbread build from the SGP...it looks like there will be some trial and error here comparing that of the nexus s build...correct me if i'm wrong, but is this where most of the proprietary libraries are located for the device?
i'm willing to engineer a generic build, described in the video tutorial and making the necessary adjustments for the ARMv7 board...
this is my first attempt at compiling Android source, so maybe we will have something or maybe i will have a good ol' brick...thanks for the great tutorial and video @zaclimon this has definitely shed some light on porting ICS for SGP
jdale38 said:
hey guys, i've been following this thread and hopefully i can be of some help...
i'm currently in the process of pulling the system files from the original gingerbread build from the SGP...it looks like there will be some trial and error here comparing that of the nexus s build...correct me if i'm wrong, but is this where most of the proprietary libraries are located for the device?
i'm willing to engineer a generic build, described in the video tutorial and making the necessary adjustments for the ARMv7 board...
this is my first attempt at compiling Android source, so maybe we will have something or maybe i will have a good ol' brick...thanks for the great tutorial and video @zaclimon this has definitely shed some light on porting ICS for SGP
Click to expand...
Click to collapse
Yes they are supposed to be there. But I have download all the source code of the firmware from opensource.samsung.com
Me and sodomywar are working with the internationnal version of the SGP4. If you want to join you're welcome.
EDIT: No problem for the tutorials.
alltellmobile said:
HaHa I'm not that good. that sounds way more complicated
Click to expand...
Click to collapse
Google is your friend
So this is where i'm at currently. I'm trying to compile and I got this error:
Code:
build/core/base_rules.mk:166: *** system/extras/ext4_utils: MODULE.TARGET.EXECUTABLES.setup_fs already defined by device/samsung/galaxyplayer. Stop.
Does anyone know how to remove that error?
EDIT: nvm I managed to remove this error.

[REQUEST][ROM]CM9-Based ROM {Lending Mine Possible}

Yes, we just got our own forums and YES it seems a bit pointless to be offering this up right away.
However, I've been reading up on ROM kitchens, etc, and I am *very* eager and excited to start playing with the newest ICS build for the Mediapad.
If anyone starts working on any CWM-9 based ROM, I would more than gladly be an active tester. My tablet currently acts as a daily Pandora-listening device, so I am more than willing to test nightly/bi-nightly/4x per day builds, whatever you request.
My tablet is at your command. Heck, if you need to remote into my PC to access the tablet, I can set up a dedicated computer connected to the Springboard, just for you.
Otherwise, I am also very much willing to temporarily donate/lend my device to a credible dev who would like to work on this.
great idea to start a thread like this..
i'm also willing to do alpha/beta testing of some new custom ROMs for our lovely MediaPad
Adreno 2xx drivers for ICS now available!!!
https://developer.qualcomm.com/deve...phics-optimization-adreno/tools-and-resources
zombolo said:
Adreno 2xx drivers for ICS now available!!!
https://developer.qualcomm.com/deve...phics-optimization-adreno/tools-and-resources
Click to expand...
Click to collapse
I have installed them on my huawei phone,-not noticed much difference.
patch
manual install
maybe try it on the pad? remember to edit build prop and set composition type to gpu.
mangoman said:
I have installed them on my huawei phone,-not noticed much difference.
patch
manual install
maybe try it on the pad? remember to edit build prop and set composition type to gpu.
Click to expand...
Click to collapse
Wouldn't the ICS build we're running already have this driver?
I'm working on a CM9 port now but it'll be my first ROM ever so it's slow going haha. It will happen though.
i think they're already on the MediaPad, but we can try this...
anybody can post a short list of steps, how to install it on the MediaPad?
or is it just as simple as extracting the zip to /system folder and modifying the build.prop?
i've checked the files on mediapad already:
- /system/etc/firmware -> has the "leia" and "yamato" files, but doesn't have the "a255" and "a300" files...
- /system/lib -> this folder doesn't exist at all
hiko36 said:
I'm working on a CM9 port now but it'll be my first ROM ever so it's slow going haha. It will happen though.
Click to expand...
Click to collapse
that's excellent news hiko36
let us know if you need testing, or anything we can provide you with, to help you on this journey
Klacik said:
i think they're already on the MediaPad, but we can try this...
anybody can post a short list of steps, how to install it on the MediaPad?
or is it just as simple as extracting the zip to /system folder and modifying the build.prop?
i've checked the files on mediapad already:
- /system/etc/firmware -> has the "leia" and "yamato" files, but doesn't have the "a255" and "a300" files...
- /system/lib -> this folder doesn't exist at all
that's excellent news hiko36
let us know if you need testing, or anything we can provide you with, to help you on this journey
Click to expand...
Click to collapse
Yes, they are already there and they are more performance oriented than the genaral drivers (NenaMark2: 33.2 fps for the general driver vs. 37.9 for the one already there). Tried it by adb pushing the new driver files to the mediapad.
€: /system/lib did not exist on your device? What firmware do you use?
mblaster said:
Yes, they are already there and they are more performance oriented than the genaral drivers (NenaMark2: 33.2 fps for the general driver vs. 37.9 for the one already there). Tried it by adb pushing the new driver files to the mediapad.
€: /system/lib did not exist on your device? What firmware do you use?
Click to expand...
Click to collapse
thanks for the information.. i'm not going to try it then
i'm using the ics b010, but the /system/lib exists.. i must've been blind or something.. maybe i've looked ih /system/etc... sorry, my bad

Cyanogenmod Stock Browser stuck in desktop mode?

Hey guys, my question is essentially what the title says. I find that in CM10 based roms, that whenever I use the stock cyanogen mod browser, it automatically goes into desktop mode (and is stuck there. The desktop mode checkbox, however, is unchecked.) I'm fairly sure it worked before I used the touch pad fix here - http://forum.xda-developers.com/showthread.php?t=1893343 - So I think it might be a framework/build.prop issue, but I'm not sure. I've been looking to fix this problem everywhere but haven't really been able to find a solution. Do you guys have any idea what the fix might be?
hey..this was better on general section or in some thread..i remember you posted this on one of the roms..but seems to be a general cm10 problem..so maybe better install another browser for your needs.
smokerman said:
hey..this was better on general section or in some thread..i remember you posted this on one of the roms..but seems to be a general cm10 problem..so maybe better install another browser for your needs.
Click to expand...
Click to collapse
Oh I asked in your racing jb rom thread, but now I'm trying to make a cm10 based rom of my own, and it seems that after testing many other Cm10 roms, everyone has this issue. But I think it's a build.prop thing, cause I'm sure that before, on Sonygenmod Cm10, it worked normally, but after I applied the touchpad fix, that's when it started messing up.
Since this is more of a universal problem, I thought all the devs here might have some insight on a fix for this.
fishvtt said:
Oh I asked in your racing jb rom thread, but now I'm trying to make a cm10 based rom of my own, and it seems that after testing many other Cm10 roms, everyone has this issue. But I think it's a build.prop thing, cause I'm sure that before, on Sonygenmod Cm10, it worked normally, but after I applied the touchpad fix, that's when it started messing up.
Since this is more of a universal problem, I thought all the devs here might have some insight on a fix for this.
Click to expand...
Click to collapse
even with FXP rom you have this issue..and it doesnt have touchpad fix..so cant be caused by that.
smokerman said:
even with FXP rom you have this issue..and it doesnt have touchpad fix..so cant be caused by that.
Click to expand...
Click to collapse
Oh ok guys, I can confirm that this is a framework problem. Not a build.prop problem. To figure this out, I used four different versions of the sonygen cm10 mod. First version was with old build.prop and old framework, witch worked fine, and the second was with old framework, but new build.prop, which also worked fine. New framework, old build.prop did not give me the mobile version of google, however, as long with the new build.prop, new framework.
So now, we just need to find out what exactly is wrong with the new version of the framework. I feel like the new framework causes the phone to look like a tablet to the cyanogenmod stock browser, but I'm not sure.
With this post I have attached both the new framework, and the old framework, if anyone else wanted to run any tests on their own. (or figure out what's wrong).
I can also supply both build.prop's if you guys think it's necessary.
I should also say, that this is an issue, for without the new framework, touchpads won't be able to work. So if anyone can help modify the new framework or anything, I would really appreciate the help.
smokerman said:
even with FXP rom you have this issue..and it doesnt have touchpad fix..so cant be caused by that.
Click to expand...
Click to collapse
Hey, smokerman, would you know how to mess with .jar files. I kinda want to go exploring to see if I can do anything.
you have here a simple guide by @CriGiu
http://forum.xda-developers.com/showthread.php?t=2322231
could help you.:good:
fishvtt said:
Oh ok guys, I can confirm that this is a framework problem. Not a build.prop problem. To figure this out, I used four different versions of the sonygen cm10 mod. First version was with old build.prop and old framework, witch worked fine, and the second was with old framework, but new build.prop, which also worked fine. New framework, old build.prop did not give me the mobile version of google, however, as long with the new build.prop, new framework.
So now, we just need to find out what exactly is wrong with the new version of the framework. I feel like the new framework causes the phone to look like a tablet to the cyanogenmod stock browser, but I'm not sure.
With this post I have attached both the new framework, and the old framework, if anyone else wanted to run any tests on their own. (or figure out what's wrong).
I can also supply both build.prop's if you guys think it's necessary.
I should also say, that this is an issue, for without the new framework, touchpads won't be able to work. So if anyone can help modify the new framework or anything, I would really appreciate the help.
Click to expand...
Click to collapse
The framework inside the patch in the first post of sonygenmod solves that issue
(it was caused by an older framework)
CriGiu said:
The framework inside the patch in the first post of sonygenmod solves that issue
(it was caused by an older framework)
Click to expand...
Click to collapse
Oh ok, I'll try testing that out.
CriGiu said:
The framework inside the patch in the first post of sonygenmod solves that issue
(it was caused by an older framework)
Click to expand...
Click to collapse
All right, well that seems to do the trick. When I try to use the touchpad activator app, it gives me the "error 5 expected reciever of type android.view.ViewRoot, but got android.view.ViewRootImpl". But, Dead Trigger works perfectly how it's supposed to, and the stock browser is using the mobile version now. Just remember to make the necessary build.prop changes as outlined in Fahrenheit's guide.

Categories

Resources