Here are the steps required for enabling a minor faction. The tables required are seen in the example .pack attached to this post. In the example pack I have made a custom celtic faction group and enabled the Ebdani and the Picts to be playable. Please note that these steps only make them playable to an extent, as the family tree and politics will cause crashes in game if you try to assign governors or anything.
Firstly, the startpos.esf...
1. Change the middle false value to true in;
campaign_preopen_map_info/campaign_players_setup/players_array/players_array-#/campaign_player_setup
compressed_data/campaign_preopen_map_info/campaign_players_setup/players_array/players_array-#/campaign_player_setup
compressed_data/campaign_env/campaign_setup/campaign_players_setup/players_array/players_array-#/campaign_player_setup
2. Change both false values to true in;
campaign_preopen_map_info/faction_infos/faction_infos-#
compressed_data/campaign_preopen_map_info/faction_infos/faction_infos-#
Next up is the db tables!
1. faction_groups
Clone the last row.
Change the key to the name you want for your faction group.
Choose an att_faction_trait_ effect bundle using combo boxes.
choose a ui icon from another faction group.
Change the number to the lowest unique digit available.
2. faction_political_parties_junctions
Clone the last two rows (council and ruler rows).
Change faction name in the first and second columns.
3. faction_to_faction_groups_junctions
Find your faction in the first column.
Change the faction group key to the one you created in step 1.
4. factions (not sure if required)
Find faction in the first column.
Tick mp_use_republic_early and mp_use_republic_late.
Change last column to closest resembled att_win. (eg. att_barbarian_win)
5. political_parties
Clone last two att_politics rows (not pro_politics)
Change key to match faction name.
Change ruler effect_bundle from combo box or other major factions.
Next up is Text!
1. faction_groups.loc
Clone 1 name row and 1 description row.
Change tags to match faction group name.
Change localised string in name to the desired name of faction group to be seen on main menu.
Change localised string in description if you so desire.
Aaand lastly... ui!
1. att_faction_group_
extract any ui/flags/att_faction_group_
Edit the mon_64.png with your own custom symbol for the faction group, or copy another one.
Rename att_fact_group_ folder with your custom faction group name.
Import your custom group symbol to your pack.
And that's all there is to it I believe!