Wiki › Messages › PSM, the Personal Safety Message: pedestrians, cyclists and road workers on the air

Updated 2026-10-09

What it is and who sends it

The Personal Safety Message is the vulnerable road user's counterpart of the BSM. A pedestrian's phone, a cyclist's handlebar unit, a road worker's vest beacon or a wheelchair-mounted device broadcasts its position, speed, heading and what kind of user it is, so that vehicles can warn their drivers of someone in or about to enter the roadway, and so that a roadside unit can request a pedestrian phase or extend a crossing. The type is PersonalSafetyMessage, DSRCmsgID 32. SAE J2945/9 gives the performance requirements for VRU devices: when to transmit, how accurate the position must be, and how to avoid flooding the channel with hundreds of phones in a crowd.

A related 2024 addition, PSM2 (DSRCmsgID 44, J2945/9's second-generation message), is listed in other messages.

When it is broadcast

PropertyValue
Rate1 to 10 Hz, adapted to risk: faster when near a roadway and moving, slower when stationary on a sidewalk; J2945/9 also allows clustering so one device speaks for a group
PSID0x27 (p-encoded 27)
ChannelSame C-V2X channel as vehicles
SigningSigned with pseudonym certificates like a BSM; the id rotates for privacy
Size40 to 120 bytes

Structure, section by section

FieldMeaningUnits and rangeTypical valueWhere it comes from
basicTypeaPEDESTRIAN, aPEDALCYCLIST, aPUBLICSAFETYWORKER, anANIMAL, unavailableenumaPEDESTRIANdevice configuration
secMarkMilliseconds within the UTC minute0 … 5999912345device clock
msgCntSequence number0 … 1279device
idTemporary identifier4 bytes hexC0FFEE01device, rotates
positionlat, long, elevation1/10 microdegree, 0.1 mGNSS
accuracyError ellipse0.05 mGNSS
speedGround speed0.02 m/s; 8191 unavailable65 (1.3 m/s, a walk)GNSS
headingDirection of travel0.0125°0 (north)GNSS or compass
accelSetAcceleration setoptionalsensors
pathHistory, pathPredictionTrail and curvature, as in a BSMoptionaldevice
propulsionCHOICE human (onFoot, skateboard, pushOrKickScooter, wheelchair…), animal, motor (wheelChair, bicycle, scooter, selfBalancingDevice…)optionalhuman: onFootdevice configuration
useState9-bit PersonalDeviceUsageState: idle, listeningToAudio, typing, calling, playingGames, reading, viewingoptionalthe phone
crossRequestThe user wants to cross (a virtual push button)booleantrueapp
crossStateThe user is crossing nowbooleanfalseapp
clusterSize, clusterRadiussmall, medium, large; radius in metersoptionalJ2945/9 clustering
eventResponderType, activityType, activitySubTypeFor public-safety and road workers: responder kind, workingOnRoad, settingUpClosures, directingTraffic…optionalworker configuration
assistType6-bit PersonalAssistive: vision, hearing, movement, cognitionoptionaluser profile
sizingSize and behavior hintsoptional
attachment, attachmentRadiusstroller, bicycleTrailer, cart, wheelchair, pet; radius in 0.1 moptionaluser profile
animalTypeserviceUse, pet, farmoptional

The fields a vehicle acts on are basicType, position, speed, heading, crossRequest and crossState. The rest help a vehicle tune its warning: a cyclist at 7 m/s is treated differently from a pedestrian at 1 m/s, and useState typing suggests a distracted user. Road worker fields let a vehicle raise a work-zone warning when workers are present even without a TIM or RSM.

How to create one in this portal

  1. Open the creator and load PSM. The template is a pedestrian waiting to cross at the Broad St & West St crosswalk with crossRequest true.
  2. Set basicType, the position (place it at the curb, not in the lane, unless you are demonstrating a crossing in progress), speed and heading.
  3. Toggle optional parts in the structure explorer: add propulsion with motor: bicycle for a cyclist, or eventResponderType and activityType for a worker.
  4. Encode / Validate. The hex begins 0020 (messageId 32). The summary shows the user type, position and crossing flags.
  5. For a roadside test, push it on PSID 0x27 with a short window so a vehicle's VRU warning can be exercised from an RSU; some pilots do exactly this to simulate pedestrians at a crosswalk.

How to read a decoded one

  • basicType unavailable with no propulsion is a device that has not been configured.
  • A PSM at 15 m/s is not a pedestrian; check basicType and propulsion before trusting the speed, or suspect a phone in a car.
  • crossRequest true while position is far from any crosswalk is a mis-located device.
  • id should rotate; a device that keeps one id for an hour is a privacy problem and probably a development unit.
  • As with BSMs, compare secMark to the receive time and watch msgCnt for gaps.
  • SAE J2735_202409, PersonalSafetyMessage module; SAE J2945/9, Vulnerable Road User Safety Message Minimum Performance Requirements.
  • BSM, SDSM for how a roadside sensor describes pedestrians who carry nothing, MAP for crosswalk lanes, units cheat sheet.