NOTE: This does require that you have smart port hooked up and working correctly to flash this way.

I wanted to update my XSR-M firmware because LUA scripts were not working and old firmware seemed to not support it. After updating to the latest firmware, lua scripts worked successfully. 
I think many people failed to update via this method because they didn't follow step 6, 7 and 8. It is very important the receiver is turned off, then its powered back on, and that the fc has full lipo power, otherwise during the flashing the voltage will drop and receiver will drop out during the flashing procedure.
  1. Download FRSKY Tool or "Tool-FrSky update sport" from here - https://www.frsky-rc.com/frusb-3-fuc-3/
  2. Download the firmware and note the file you will flash. EU has LBT in the filename, international has FCC in the filename
  3. Plug in your quad via USB and goto ports, and note the SMART PORT Uart you are using. You will use one number less in next code line. EG. UART 6 type serialpassthrough 5
  4. Then goto CLI and type serialpassthrough 5 57600
  5. Disconnect from Betaflight Configurator 
  6. Unplug your receiver now so it has no power what so ever
  7. Open up FRSKY tool and select the file (make sure you right click and run as administrator)
  8. Now plug in your quad via LIPO
  9. Now plug in your Receiver.
  10. If successful it should now have current firmware version and hardware version number in the FRSKY tool.
  11. Click Download and be patient, flashing takes about 1-2 minutes

You will need to rebind your receiver after flashing.