What software/ hardware do i need to read OBD2 Codes

This a much bigger question than first appears. If we limit it to what is a cost effective DIY solution to "read my Fiat and simple maintenance issues eg change the oil in my euro 6 or add a new MAF sensor" then the answer for me reduces to
Windows laptop
Software : multiecuscan
Alfaobd for Windows.
Android phone, tablet and alfaobd is also available for IOS but with an annual subscription of £50 and other factors a number of apple users buy a windows laptop specificaly.

Specific obd2 readers are also needed as as not all talk Fiat.
Gendan is a distributor for both mes and USB dongle .
For Bluetooth I use a vgate icar pro from ebay £25 they work, cheap £10 ones do not.
To use other ecus you may need various coloured adapters. A yellow adapter is sufficient for can based Ducatos.
I use a win10 multiecuscan with both obdsx USB dongle and vgate..
Alfaobd Samsung j6 phone a8 or tabA tablet and vgate or obdsx and a USB convertor cable. ie this can be achieved a number of ways.

Generic ones will not do many of the 2 way applications eg turning lights or equipment on to show they are under control, these 2 are the only diy product that can reset the oil degradation counter. They can interogate the systems in depth eg give you the software version you are running.
Buy a £10 device you get £10 of info when you want to do more there is the advice here on how to use them , almost dealer spec for £100 (MES +win laptop) to less than £60(alfa obd android device)

I have only mentioned the 2 obd readers i use, there are many others suitable.
If you have SGW with a security gateway there is a cable that can be used to bypass the gateway. I can offer no advice if a particular model has one as it was introduced on different models at different times (Starting 2018).
Which is best Multiecuscan or AlfaOBD?
You tell me, Both cover the things I need there are minor differences.
If I had a Dodge Ram then the Support for Alfobd is good but I have a Ducato.
For other Sevel vans ie Peugeot Boxer and Citroen rRlay, Mulriecuscan can read the non engine ecus but not the engine,however Alfaobd can read Boxer and Relay engines

For Me I am more comfortable with Multiecuscan and there is better support here and
I also prefer the greater number of PIDs that can be monitored at a time. (i also don't hen (change sex of bird) up saving the data on MES whereas i do with Alfaobd (could just be a matter of familiarity)).
I have both so am happy to know I have some capability in the van at all times as long as i don't forget my phone.