Here are my 300kbit settings:
SX1231_REG_BITRATEMSB, SX1231_BITRATEMSB_300000,
SX1231_REG_BITRATELSB, SX1231_BITRATELSB_300000,
SX1231_REG_FDEVMSB, SX1231_FDEVMSB_200000,
SX1231_REG_FDEVLSB, SX1231_FDEVLSB_200000,
SX1231_REG_RXBW, SX1231_RXBW_DCCFREQ_010 | SX1231_RXBW_400000,
SX1231_REG_RSSITHRESH, 255,
SX1231_REG_PREAMBLELSB, 6,
SX1231_REG_PACKETCONFIG2, SX1231_PACKET2_RXRESTARTDELAY_2BITS | SX1231_PACKET2_AUTORXRESTART_OFF | SX1231_PACKET2_AES_OFF,
SX1231_REG_PACKETCONFIG1, SX1231_PACKET1_FORMAT_VARIABLE | SX1231_PACKET1_DCFREE_WHITENING | SX1231_PACKET1_CRC_ON | SX1231_PACKET1_CRCAUTOCLEAR_ON | SX1231_PACKET1_ADRSFILTERING_OFF,
SX1231_REG_PARAMP, SX1231_PARAMP_10,
SX1231_REG_LNA, SX1231_LNA_GAINSELECT_MAX
It looks as though you're setting DCC to 010 even though, in this scenario, that results in low beta?
Or, maybe I'm calculating it wrong. With your other settings, my calculations are:
[FDev] 3277Hz
[FDEV] 200012Hz
Beta=((2*FDev)/BitRate)=0.02
Fcutoff=15915.50Hz
Percentage=3.98%
On a different topic: you aren't doing address filtering, and I guess maybe that's because you aren't sending addresses? And that is because... why? Is it to save energy (or make smaller frames) from not sending address bits? Instead of addresses I gather you used time division to differentiate the intended recipient? Or just embed the address in the packet if and when it's needed?
It's also interesting that you aren't doing encryption. Any particular reason?
[Edit1: Also, for the benefit of anyone else who may be reading this, I presume when you're setting the REG_LNA that you're setting LnaZin (bit 7) to zero to designate an input impedance of 50 ohms. The default setting is 200 ohms.]
[Edit2: Likewise, I presume you have AFC turned off because of the wide RxBW? I also presume that because you don't appear to be setting RxBwAFC anywhere.]