Technical Description of OBD-II Trouble Code
The circuit for the Transmission Range Sensor “B” is registering a high voltage.
What does that mean?
This is a generic code that applies to all makes and models manufactured from 1996 onwards. However, the specific troubleshooting steps may vary depending on the vehicle.
This is a generic diagnostic trouble code (DTC) related to the powertrain in the transmission sub-group. It is classified as a type “B” code, which means that the check engine light will not be activated by the powertrain control module (PCM) or the transmission control module (TCM) unless the conditions required to trigger the code are present for two consecutive key cycles (turning the key on and off, and then off and on again).
The PCM/TCM utilizes the transmission range sensor, also known as the inhibitor switch, to determine the gear position of the shift lever. The code itself indicates that there is an issue with the range sensor signal, which is either not consistently present or intermittently missing.
Here is an example of an external Transmission Range Sensor (TRS):

TRS image from Dorman
Symptoms & Severity of Code
After the second key cycle, the PCM/TCM will activate the check engine light and put the transmission into “Limp-home” or “safe-mode”. This will result in a noticeable loss of power, particularly when accelerating from a complete stop. In this mode, the transmission will start off in third gear, which can cause excessive strain on the internal clutches of the transmission.
In my experience, this can lead to severe internal damage to the transmission, so it is important to address the issue as soon as possible. It is advisable to avoid using the vehicle until repairs can be made.
Causes
Possible causes for this code include:
Diagnostic and Repair Procedures
The transmission range sensor receives a 12-volt signal from the ignition switch and then sends a 12-volt signal, corresponding to the gear position, to the PCM/TCM.
P2804 is triggered when the signal is not detected by the PCM/TCM. The most accurate way to diagnose this DTC is by using a scan tool that can read live data. However, if a scan tool is not available, there are a few things that can be checked using a digital volt ohm meter (DVOM). In my experience, wiring issues are the most common cause of intermittent signal problems.
In this case, it is recommended to visually inspect the range sensor wiring harness and the internal contacts of the range sensor connector. If any issues are found during the inspection, they should be repaired, the codes cleared, and the vehicle test-driven. If the DTC reappears, set the DVOM to volts and back probe the appropriate circuits at the PCM/TCM while “wiggling” the harness connected to the range sensor. If no intermittent voltage loss is observed on the meter, a faulty range sensor may be suspected.
Related Transmission Range Sensor codes: P2800, P2801, P2802, and P2803.