PRProd / HA-Firemote

Apple TV, Amazon Fire TV, Chromecast, Homatics, NVIDIA Shield, onn., Roku, Xiaomi Mi, and Android TV remote control card for Home Assistant
GNU General Public License v3.0
543 stars 72 forks source link

[New Device Support]: Fire TV Stick 4K (2nd Gen) #225

Closed jezzamine closed 1 year ago

jezzamine commented 1 year ago

Device Name

Fire TV Stick 4K (2nd Gen)

Which compatibility mode event number works BEST with your device?

None

Additional Comments (optional)

No response

Interrogation ADB Response (optional but EXTREMELY helpful)

adb_response: |-
  INPUT MANAGER (dumpsys input)

  Input Manager State:
    Interactive: false
    System UI Visibility: 0x9808
    Pointer Speed: 0
    Pointer Gestures Enabled: true
    Show Touches: false
    Pointer Capture Enabled: false

  Event Hub State:
    BuiltInKeyboardId: -2
    Devices:
      -1: Virtual
        Classes: 0x40000023
        Path: <virtual>
        Enabled: true
        Descriptor: a718a782d34bc767f4689c232d64d527998ea7fd:00000000
        Location: 
        ControllerNumber: 0
        UniqueId: <virtual>
        Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
        KeyLayoutFile: /system/usr/keylayout/Generic.kl
        KeyCharacterMapFile: /system/usr/keychars/Virtual.kcm
        ConfigurationFile: 
        HaveKeyboardLayoutOverlay: false
        VideoDevice: <none>
      1: WOBLE_INPUT_DEVICE
        Classes: 0x00000001
        Path: /dev/input/event1
        Enabled: true
        Descriptor: 76d09a7d1f3b8d113bb56ed2568268f86d137837:00020002
        Location: 
        ControllerNumber: 0
        UniqueId: 
        Identifier: bus=0x0019, vendor=0x0002, product=0x0002, version=0x0002
        KeyLayoutFile: /system/usr/keylayout/Generic.kl
        KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
        ConfigurationFile: 
        HaveKeyboardLayoutOverlay: false
        VideoDevice: <none>
      2: hdmipower
        Classes: 0x00000001
        Path: /dev/input/event0
        Enabled: true
        Descriptor: a917cc44911b6f32b9481384b0da35fb5f3d84d3:00000000
        Location: 
        ControllerNumber: 0
        UniqueId: 
        Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
        KeyLayoutFile: /system/usr/keylayout/Generic.kl
        KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
        ConfigurationFile: 
        HaveKeyboardLayoutOverlay: false
        VideoDevice: <none>
      3: amazon_touch
        Classes: 0x00000014
        Path: /dev/input/event2
        Enabled: true
        Descriptor: 185733e0df071e21edd860dd6224a1f9f378c689:00000000
        Location: 
        ControllerNumber: 0
        UniqueId: 
        Identifier: bus=0x0005, vendor=0x0000, product=0x0000, version=0x0008
        KeyLayoutFile: 
        KeyCharacterMapFile: 
        ConfigurationFile: /system/usr/idc/amazon_touch.idc
        HaveKeyboardLayoutOverlay: false
        VideoDevice: <none>
      4: WOW_INPUT_DEVICE
        Classes: 0x00000001
        Path: /dev/input/event3
        Enabled: true
        Descriptor: 485d69228e24f5e46da1598745890b214130dbc4:00010001
        Location: 
        ControllerNumber: 0
        UniqueId: 
        Identifier: bus=0x0019, vendor=0x0001, product=0x0001, version=0x0001
        KeyLayoutFile: /system/usr/keylayout/Generic.kl
        KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
        ConfigurationFile: 
        HaveKeyboardLayoutOverlay: false
        VideoDevice: <none>
      5: kcmouse
        Classes: 0x80000008
        Path: /dev/input/event4
        Enabled: true
        Descriptor: 3b975ed12e4cb4357a995906d1f9c74d8457fd71:00000000
        Location: 
        ControllerNumber: 0
        UniqueId: 
        Identifier: bus=0x0005, vendor=0x0000, product=0x0000, version=0x0008
        KeyLayoutFile: 
        KeyCharacterMapFile: 
        ConfigurationFile: 
        HaveKeyboardLayoutOverlay: false
        VideoDevice: <none>
    Unattached video devices:
      <none>

  Input Reader State:
    Device 6: kcmouse
      Generation: 22
      IsExternal: true
      AssociatedDisplayPort: <none>
      HasMic:     false
      Sources: 0x00002002
      KeyboardType: 0
      Motion Ranges:
        X: source=0x00002002, min=0.000, max=1919.000, flat=0.000, fuzz=0.000, resolution=0.000
        Y: source=0x00002002, min=0.000, max=1079.000, flat=0.000, fuzz=0.000, resolution=0.000
        PRESSURE: source=0x00002002, min=0.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
        VSCROLL: source=0x00002002, min=-1.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
      Cursor Input Mapper:
        Parameters:
          HasAssociatedDisplay: true
          Mode: pointer
          OrientationAware: false
        XScale: 1.000
        YScale: 1.000
        XPrecision: 1.000
        YPrecision: 1.000
        HaveVWheel: true
        HaveHWheel: false
        VWheelScale: 1.000
        HWheelScale: 1.000
        Orientation: 0
        ButtonState: 0x00000000
        Down: false
        DownTime: 0
    Device 5: WOW_INPUT_DEVICE
      Generation: 11
      IsExternal: false
      AssociatedDisplayPort: <none>
      HasMic:     false
      Sources: 0x00000101
      KeyboardType: 1
      Keyboard Input Mapper:
        Parameters:
          OrientationAware: false
          HandlesKeyRepeat: false
        KeyboardType: 1
        Orientation: 0
        KeyDowns: 0 keys currently down
        MetaState: 0x0
        DownTime: 0
    Device -1: Virtual
      Generation: 2
      IsExternal: false
      AssociatedDisplayPort: <none>
      HasMic:     false
      Sources: 0x00000301
      KeyboardType: 2
      Keyboard Input Mapper:
        Parameters:
          OrientationAware: false
          HandlesKeyRepeat: false
        KeyboardType: 2
        Orientation: 0
        KeyDowns: 0 keys currently down
        MetaState: 0x0
        DownTime: 0
    Device 4: amazon_touch
      Generation: 23
      IsExternal: false
      AssociatedDisplayPort: <none>
      HasMic:     false
      Sources: 0x00001002
      KeyboardType: 0
      Motion Ranges:
        X: source=0x00001002, min=0.000, max=1919.000, flat=0.000, fuzz=0.000, resolution=0.000
        Y: source=0x00001002, min=0.000, max=1079.000, flat=0.000, fuzz=0.000, resolution=0.000
        PRESSURE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
      Touch Input Mapper (mode - direct):
        Parameters:
          GestureMode: multi-touch
          DeviceType: touchScreen
          AssociatedDisplay: hasAssociatedDisplay=true, isExternal=false, displayId=''
          OrientationAware: true
        Raw Touch Axes:
          X: min=0, max=1919, flat=0, fuzz=0, resolution=0
          Y: min=0, max=1079, flat=0, fuzz=0, resolution=0
          Pressure: unknown range
          TouchMajor: unknown range
          TouchMinor: unknown range
          ToolMajor: unknown range
          ToolMinor: unknown range
          Orientation: unknown range
          Distance: unknown range
          TiltX: unknown range
          TiltY: unknown range
          TrackingId: unknown range
          Slot: unknown range
        Calibration:
          touch.size.calibration: none
          touch.size.scale: 40.000
          touch.size.bias: 0.000
          touch.size.isSummed: false
          touch.pressure.calibration: none
          touch.pressure.scale: 0.013
          touch.orientation.calibration: none
          touch.distance.calibration: none
          touch.coverage.calibration: none
        Affine Transformation:
          X scale: 1.000
          X ymix: 0.000
          X offset: 0.000
          Y xmix: 0.000
          Y scale: 1.000
          Y offset: 0.000
        Viewport INTERNAL: displayId=0, uniqueId=local:0, port=0, orientation=0, logicalFrame=[0, 0, 1920, 1080], physicalFrame=[0, 0, 1920, 1080], deviceSize=[1920, 1080], isActive=[0]
        RawSurfaceWidth: 1920px
        RawSurfaceHeight: 1080px
        SurfaceLeft: 0
        SurfaceTop: 0
        SurfaceRight: 1920
        SurfaceBottom: 1080
        PhysicalWidth: 1920px
        PhysicalHeight: 1080px
        PhysicalLeft: 0
        PhysicalTop: 0
        SurfaceOrientation: 0
        Translation and Scaling Factors:
          XTranslate: 0.000
          YTranslate: 0.000
          XScale: 1.000
          YScale: 1.000
          XPrecision: 1.000
          YPrecision: 1.000
          GeometricScale: 1.000
          PressureScale: 0.000
          SizeScale: 0.000
          OrientationScale: 0.000
          DistanceScale: 0.000
          HaveTilt: false
          TiltXCenter: 0.000
          TiltXScale: 0.000
          TiltYCenter: 0.000
          TiltYScale: 0.000
        Last Raw Button State: 0x00000000
        Last Raw Touch: pointerCount=0
        Last Cooked Button State: 0x00000000
        Last Cooked Touch: pointerCount=0
        Stylus Fusion:
          ExternalStylusConnected: false
          External Stylus ID: -1
          External Stylus Data Timeout: 9223372036854775807
        External Stylus State:
          When: 9223372036854775807
          Pressure: 0.000000
          Button State: 0x00000000
          Tool Type: 0
    Device 3: WOBLE_INPUT_DEVICE
      Generation: 6
      IsExternal: false
      AssociatedDisplayPort: <none>
      HasMic:     false
      Sources: 0x00000101
      KeyboardType: 1
      Keyboard Input Mapper:
        Parameters:
          OrientationAware: false
          HandlesKeyRepeat: false
        KeyboardType: 1
        Orientation: 0
        KeyDowns: 0 keys currently down
        MetaState: 0x0
        DownTime: 0
    Device 2: hdmipower
      Generation: 4
      IsExternal: false
      AssociatedDisplayPort: <none>
      HasMic:     false
      Sources: 0x00000101
      KeyboardType: 1
      Keyboard Input Mapper:
        Parameters:
          OrientationAware: false
          HandlesKeyRepeat: false
        KeyboardType: 1
        Orientation: 0
        KeyDowns: 0 keys currently down
        MetaState: 0x0
        DownTime: 0
    Configuration:
      ExcludedDeviceNames: []
      VirtualKeyQuietTime: 0.0ms
      PointerVelocityControlParameters: scale=1.000, lowThreshold=500.000, highThreshold=3000.000, acceleration=3.000
      WheelVelocityControlParameters: scale=1.000, lowThreshold=15.000, highThreshold=50.000, acceleration=4.000
      PointerGesture:
        Enabled: true
        QuietInterval: 100.0ms
        DragMinSwitchSpeed: 50.0px/s
        TapInterval: 150.0ms
        TapDragInterval: 300.0ms
        TapSlop: 20.0px
        MultitouchSettleInterval: 100.0ms
        MultitouchMinDistance: 15.0px
        SwipeTransitionAngleCosine: 0.3
        SwipeMaxWidthRatio: 0.2
        MovementSpeedRatio: 0.8
        ZoomSpeedRatio: 0.3
        Viewports:
          Viewport INTERNAL: displayId=0, uniqueId=local:0, port=0, orientation=0, logicalFrame=[0, 0, 1920, 1080], physicalFrame=[0, 0, 1920, 1080], deviceSize=[1920, 1080], isActive=[0]

  Input Classifier State:
    Motion Classifier:
      <nullptr>

  Input Dispatcher State:
    DispatchEnabled: true
    DispatchFrozen: false
    InputFilterEnabled: false
    FocusedDisplayId: 0
    FocusedApplications:
      displayId=0, name='ActivityRecord{1c17d8c u0 com.amazon.ftv.profilepicker/.ui.PickerActivity t111}', dispatchingTimeout=5000ms
    FocusedWindows: <none>
    TouchStates: <no displays touched>
    Display: 0
      Windows:
        0: name='ColorFade#0', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x00000020, type=0x00000000, frame=[0,0][1920,1080], globalScale=1.000000, windowScale=(1.000000,1.000000), touchableRegion=<empty>, inputFeatures=0x00000002, ownerPid=696, ownerUid=1000, dispatchingTimeout=0ms
        1: name='e39b2bf ActivityRecordInputSink com.amazon.ftv.profilepicker/.ui.PickerActivity', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x00000008, type=0x000007e6, frame=[-1,-1][0,0], globalScale=0.000000, windowScale=(1.000000,1.000000), touchableRegion=<empty>, inputFeatures=0x00000002, ownerPid=696, ownerUid=1000, dispatchingTimeout=0ms
        2: name='bc0ce64 ActivityRecordInputSink com.silicondust.view/.App', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x00000018, type=0x000007e6, frame=[-1,-1][0,0], globalScale=0.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][1920,1080], inputFeatures=0x00000002, ownerPid=696, ownerUid=1000, dispatchingTimeout=0ms
        3: name='4bf46fa ActivityRecordInputSink com.amazon.tv.launcher/.ui.HomeActivity_vNext', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x00000008, type=0x000007e6, frame=[-1,-1][0,0], globalScale=0.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][1920,1080], inputFeatures=0x00000002, ownerPid=696, ownerUid=1000, dispatchingTimeout=0ms
    Global monitors in display 0:
      0: 'PointerEventDispatcher0 (server)', 
    RecentQueue: length=10
      KeyEvent, age=1499584ms
      KeyEvent, age=1499584ms
      FocusEvent(hasFocus=false), age=1199015ms
      FocusEvent(hasFocus=true), age=1198581ms
      FocusEvent(hasFocus=false), age=299542ms
      FocusEvent(hasFocus=true), age=299328ms
      DeviceResetEvent(deviceId=4), policyFlags=0x00000000, age=298940ms
      FocusEvent(hasFocus=false), age=298444ms
      DeviceResetEvent(deviceId=7), policyFlags=0x00000000, age=298268ms
      ConfigurationChangedEvent(), policyFlags=0x00000000, age=298268ms
    PendingEvent: <none>
    InboundQueue: <empty>
    ReplacedKeys: <empty>
    Connections:
      524: channelName='af5a378 com.silicondust.view/com.silicondust.view.App (server)', windowName='af5a378 com.silicondust.view/com.silicondust.view.App (server)', status=NORMAL, monitor=false, responsive=true
        OutboundQueue: <empty>
        WaitQueue: <empty>
      417: channelName='b9873aa com.amazon.ftv.profilepicker/com.amazon.ftv.profilepicker.ui.PickerActivity (server)', windowName='b9873aa com.amazon.ftv.profilepicker/com.amazon.ftv.profilepicker.ui.PickerActivity (server)', status=NORMAL, monitor=false, responsive=true
        OutboundQueue: <empty>
        WaitQueue: <empty>
      428: channelName='d70b346 InputMethod (server)', windowName='d70b346 InputMethod (server)', status=NORMAL, monitor=false, responsive=true
        OutboundQueue: <empty>
        WaitQueue: <empty>
      343: channelName='9463226 com.amazon.tv.launcher/com.amazon.tv.launcher.ui.HomeActivity_vNext (server)', windowName='9463226 com.amazon.tv.launcher/com.amazon.tv.launcher.ui.HomeActivity_vNext (server)', status=NORMAL, monitor=false, responsive=true
        OutboundQueue: <empty>
        WaitQueue: <empty>
      268: channelName='4b83e6d com.amazon.vizzini (server)', windowName='4b83e6d com.amazon.vizzini (server)', status=NORMAL, monitor=false, responsive=true
        OutboundQueue: <empty>
        WaitQueue: <empty>
      510: channelName='af2c4d8 com.amazon.vizzini (server)', windowName='af2c4d8 com.amazon.vizzini (server)', status=NORMAL, monitor=false, responsive=true
        OutboundQueue: <empty>
        WaitQueue: <empty>
      137: channelName='PointerEventDispatcher0 (server)', windowName='PointerEventDispatcher0 (server)', status=NORMAL, monitor=true, responsive=true
        OutboundQueue: <empty>
        WaitQueue: <empty>
    AppSwitch: not pending
    Configuration:
      KeyRepeatDelay: 50ms
      KeyRepeatTimeout: 400ms
hdmi_input: null
device_class: tv
friendly_name: Guest Room Fire TV
supported_features: 22961
PRProd commented 1 year ago

Greetings @jezzamine!

Great minds think alike! Another user already beat you to this request (#201). The great news for you is that it's already been completed!

Any version of Firemote v3.0.1 or newer does include the newest FireTV Stick 4K Max 2nd gen as an option to select:

image

I did notice in your device interrogation (THANK YOU SO MUCH FOR PROVIDING IT!) that at the time you ran the command, there wasn't a physical remote connected to your stick. This is an unfortunate, but common scenario that can lead to frustration for some Firemote users. In fact, I have included a section about it in the FAQ since it comes up frequently. So, if after downloading the latest version of Firemote and selecting Fire TV Stick 4K Max (2nd Gen - 2023) you find that you cannot control your new fire stick yet, I'd take a look at that article.

I'll close this for now, but feel free to reply here or open a new issue if you would like any additional help with anything.

Enjoy!

jezzamine commented 1 year ago

Hi, hoping you can take another look at this request please.

Mine is not the MAX version. It doesn't have the same specs and has a slightly different remote. Please see here for the differences: https://www.androidpolice.com/amazon-fire-tv-stick-4k-vs-fire-tv-stick-4k-max-2023/

The physical remote is definitely connected and working but I may have had the TV and Fire TV Stick turned off when I did the first device interrogation so here's another one with them both definitely turned on.


Input Manager State:
  Interactive: true
  System UI Visibility: 0x9808
  Pointer Speed: 0
  Pointer Gestures Enabled: true
  Show Touches: false
  Pointer Capture Enabled: false

Event Hub State:
  BuiltInKeyboardId: -2
  Devices:
    -1: Virtual
      Classes: 0x40000023
      Path: <virtual>
      Enabled: true
      Descriptor: a718a782d34bc767f4689c232d64d527998ea7fd:00000000
      Location: 
      ControllerNumber: 0
      UniqueId: <virtual>
      Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
      KeyLayoutFile: /system/usr/keylayout/Generic.kl
      KeyCharacterMapFile: /system/usr/keychars/Virtual.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>
    1: WOBLE_INPUT_DEVICE
      Classes: 0x00000001
      Path: /dev/input/event1
      Enabled: true
      Descriptor: 76d09a7d1f3b8d113bb56ed2568268f86d137837:00020002
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0019, vendor=0x0002, product=0x0002, version=0x0002
      KeyLayoutFile: /system/usr/keylayout/Generic.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>
    2: hdmipower
      Classes: 0x00000001
      Path: /dev/input/event0
      Enabled: true
      Descriptor: a917cc44911b6f32b9481384b0da35fb5f3d84d3:00000000
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
      KeyLayoutFile: /system/usr/keylayout/Generic.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>
    3: amazon_touch
      Classes: 0x00000014
      Path: /dev/input/event2
      Enabled: true
      Descriptor: 185733e0df071e21edd860dd6224a1f9f378c689:00000000
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0005, vendor=0x0000, product=0x0000, version=0x0008
      KeyLayoutFile: 
      KeyCharacterMapFile: 
      ConfigurationFile: /system/usr/idc/amazon_touch.idc
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>
    4: WOW_INPUT_DEVICE
      Classes: 0x00000001
      Path: /dev/input/event3
      Enabled: true
      Descriptor: 485d69228e24f5e46da1598745890b214130dbc4:00010001
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0019, vendor=0x0001, product=0x0001, version=0x0001
      KeyLayoutFile: /system/usr/keylayout/Generic.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>
    5: kcmouse
      Classes: 0x80000008
      Path: /dev/input/event4
      Enabled: true
      Descriptor: 3b975ed12e4cb4357a995906d1f9c74d8457fd71:00000000
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0005, vendor=0x0000, product=0x0000, version=0x0008
      KeyLayoutFile: 
      KeyCharacterMapFile: 
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>
    7: Amazon Fire TV Remote
      Classes: 0x80000021
      Path: /dev/input/event5
      Enabled: true
      Descriptor: 85ee2bef01e7fb258d04646e30896db3f238309a:01710421
      Location: 
      ControllerNumber: 0
      UniqueId: E8:4C:4A:E7:CA:D6
      Identifier: bus=0x0005, vendor=0x0171, product=0x0421, version=0x003a
      KeyLayoutFile: /system/usr/keylayout/Vendor_0171_Product_0421.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>
  Unattached video devices:
    <none>

Input Reader State:
  Device 8: Amazon Fire TV Remote
    Generation: 25
    IsExternal: true
    AssociatedDisplayPort: <none>
    HasMic:     false
    Sources: 0x00000301
    KeyboardType: 1
    Keyboard Input Mapper:
      Parameters:
        OrientationAware: false
        HandlesKeyRepeat: false
      KeyboardType: 1
      Orientation: 0
      KeyDowns: 0 keys currently down
      MetaState: 0x0
      DownTime: 283726080777000
  Device 6: kcmouse
    Generation: 27
    IsExternal: true
    AssociatedDisplayPort: <none>
    HasMic:     false
    Sources: 0x00002002
    KeyboardType: 0
    Motion Ranges:
      X: source=0x00002002, min=0.000, max=1919.000, flat=0.000, fuzz=0.000, resolution=0.000
      Y: source=0x00002002, min=0.000, max=1079.000, flat=0.000, fuzz=0.000, resolution=0.000
      PRESSURE: source=0x00002002, min=0.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
      VSCROLL: source=0x00002002, min=-1.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
    Cursor Input Mapper:
      Parameters:
        HasAssociatedDisplay: true
        Mode: pointer
        OrientationAware: false
      XScale: 1.000
      YScale: 1.000
      XPrecision: 1.000
      YPrecision: 1.000
      HaveVWheel: true
      HaveHWheel: false
      VWheelScale: 1.000
      HWheelScale: 1.000
      Orientation: 0
      ButtonState: 0x00000000
      Down: false
      DownTime: 0
  Device 5: WOW_INPUT_DEVICE
    Generation: 11
    IsExternal: false
    AssociatedDisplayPort: <none>
    HasMic:     false
    Sources: 0x00000101
    KeyboardType: 1
    Keyboard Input Mapper:
      Parameters:
        OrientationAware: false
        HandlesKeyRepeat: false
      KeyboardType: 1
      Orientation: 0
      KeyDowns: 0 keys currently down
      MetaState: 0x0
      DownTime: 0
  Device -1: Virtual
    Generation: 2
    IsExternal: false
    AssociatedDisplayPort: <none>
    HasMic:     false
    Sources: 0x00000301
    KeyboardType: 2
    Keyboard Input Mapper:
      Parameters:
        OrientationAware: false
        HandlesKeyRepeat: false
      KeyboardType: 2
      Orientation: 0
      KeyDowns: 0 keys currently down
      MetaState: 0x0
      DownTime: 0
  Device 4: amazon_touch
    Generation: 28
    IsExternal: false
    AssociatedDisplayPort: <none>
    HasMic:     false
    Sources: 0x00001002
    KeyboardType: 0
    Motion Ranges:
      X: source=0x00001002, min=0.000, max=1919.000, flat=0.000, fuzz=0.000, resolution=0.000
      Y: source=0x00001002, min=0.000, max=1079.000, flat=0.000, fuzz=0.000, resolution=0.000
      PRESSURE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
    Touch Input Mapper (mode - direct):
      Parameters:
        GestureMode: multi-touch
        DeviceType: touchScreen
        AssociatedDisplay: hasAssociatedDisplay=true, isExternal=false, displayId=''
        OrientationAware: true
      Raw Touch Axes:
        X: min=0, max=1919, flat=0, fuzz=0, resolution=0
        Y: min=0, max=1079, flat=0, fuzz=0, resolution=0
        Pressure: unknown range
        TouchMajor: unknown range
        TouchMinor: unknown range
        ToolMajor: unknown range
        ToolMinor: unknown range
        Orientation: unknown range
        Distance: unknown range
        TiltX: unknown range
        TiltY: unknown range
        TrackingId: unknown range
        Slot: unknown range
      Calibration:
        touch.size.calibration: none
        touch.size.scale: 40.000
        touch.size.bias: 0.000
        touch.size.isSummed: false
        touch.pressure.calibration: none
        touch.pressure.scale: 0.013
        touch.orientation.calibration: none
        touch.distance.calibration: none
        touch.coverage.calibration: none
      Affine Transformation:
        X scale: 1.000
        X ymix: 0.000
        X offset: 0.000
        Y xmix: 0.000
        Y scale: 1.000
        Y offset: 0.000
      Viewport INTERNAL: displayId=0, uniqueId=local:0, port=0, orientation=0, logicalFrame=[0, 0, 1920, 1080], physicalFrame=[0, 0, 1920, 1080], deviceSize=[1920, 1080], isActive=[1]
      RawSurfaceWidth: 1920px
      RawSurfaceHeight: 1080px
      SurfaceLeft: 0
      SurfaceTop: 0
      SurfaceRight: 1920
      SurfaceBottom: 1080
      PhysicalWidth: 1920px
      PhysicalHeight: 1080px
      PhysicalLeft: 0
      PhysicalTop: 0
      SurfaceOrientation: 0
      Translation and Scaling Factors:
        XTranslate: 0.000
        YTranslate: 0.000
        XScale: 1.000
        YScale: 1.000
        XPrecision: 1.000
        YPrecision: 1.000
        GeometricScale: 1.000
        PressureScale: 0.000
        SizeScale: 0.000
        OrientationScale: 0.000
        DistanceScale: 0.000
        HaveTilt: false
        TiltXCenter: 0.000
        TiltXScale: 0.000
        TiltYCenter: 0.000
        TiltYScale: 0.000
      Last Raw Button State: 0x00000000
      Last Raw Touch: pointerCount=0
      Last Cooked Button State: 0x00000000
      Last Cooked Touch: pointerCount=0
      Stylus Fusion:
        ExternalStylusConnected: false
        External Stylus ID: -1
        External Stylus Data Timeout: 9223372036854775807
      External Stylus State:
        When: 9223372036854775807
        Pressure: 0.000000
        Button State: 0x00000000
        Tool Type: 0
  Device 3: WOBLE_INPUT_DEVICE
    Generation: 6
    IsExternal: false
    AssociatedDisplayPort: <none>
    HasMic:     false
    Sources: 0x00000101
    KeyboardType: 1
    Keyboard Input Mapper:
      Parameters:
        OrientationAware: false
        HandlesKeyRepeat: false
      KeyboardType: 1
      Orientation: 0
      KeyDowns: 0 keys currently down
      MetaState: 0x0
      DownTime: 0
  Device 2: hdmipower
    Generation: 4
    IsExternal: false
    AssociatedDisplayPort: <none>
    HasMic:     false
    Sources: 0x00000101
    KeyboardType: 1
    Keyboard Input Mapper:
      Parameters:
        OrientationAware: false
        HandlesKeyRepeat: false
      KeyboardType: 1
      Orientation: 0
      KeyDowns: 0 keys currently down
      MetaState: 0x0
      DownTime: 0
  Configuration:
    ExcludedDeviceNames: []
    VirtualKeyQuietTime: 0.0ms
    PointerVelocityControlParameters: scale=1.000, lowThreshold=500.000, highThreshold=3000.000, acceleration=3.000
    WheelVelocityControlParameters: scale=1.000, lowThreshold=15.000, highThreshold=50.000, acceleration=4.000
    PointerGesture:
      Enabled: true
      QuietInterval: 100.0ms
      DragMinSwitchSpeed: 50.0px/s
      TapInterval: 150.0ms
      TapDragInterval: 300.0ms
      TapSlop: 20.0px
      MultitouchSettleInterval: 100.0ms
      MultitouchMinDistance: 15.0px
      SwipeTransitionAngleCosine: 0.3
      SwipeMaxWidthRatio: 0.2
      MovementSpeedRatio: 0.8
      ZoomSpeedRatio: 0.3
      Viewports:
        Viewport INTERNAL: displayId=0, uniqueId=local:0, port=0, orientation=0, logicalFrame=[0, 0, 1920, 1080], physicalFrame=[0, 0, 1920, 1080], deviceSize=[1920, 1080], isActive=[1]

Input Classifier State:
  Motion Classifier:
    <nullptr>

Input Dispatcher State:
  DispatchEnabled: true
  DispatchFrozen: false
  InputFilterEnabled: false
  FocusedDisplayId: 0
  FocusedApplications:
    displayId=0, name='ActivityRecord{272eea1 u0 com.amazon.tv.launcher/.ui.HomeActivity_vNext t101}', dispatchingTimeout=5000ms
  FocusedWindows:
    displayId=0, name='Window{9463226 u0 com.amazon.tv.launcher/com.amazon.tv.launcher.ui.HomeActivity_vNext}'
  TouchStates: <no displays touched>
  Display: 0
    Windows:
      0: name='bc0ce64 ActivityRecordInputSink com.silicondust.view/.App', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x00000018, type=0x000007e6, frame=[-1,-1][0,0], globalScale=0.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][1920,1080], inputFeatures=0x00000002, ownerPid=696, ownerUid=1000, dispatchingTimeout=0ms
      1: name='Window{9463226 u0 com.amazon.tv.launcher/com.amazon.tv.launcher.ui.HomeActivity_vNext}', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=true, hasWallpaper=false, visible=true, canReceiveKeys=true, flags=0x81810120, type=0x00000001, frame=[0,0][1920,1080], globalScale=1.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][1920,1080], inputFeatures=0x00000000, ownerPid=3930, ownerUid=10185, dispatchingTimeout=5000ms
      2: name='4bf46fa ActivityRecordInputSink com.amazon.tv.launcher/.ui.HomeActivity_vNext', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x00000008, type=0x000007e6, frame=[-1,-1][0,0], globalScale=0.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][1920,1080], inputFeatures=0x00000002, ownerPid=696, ownerUid=1000, dispatchingTimeout=0ms
  Global monitors in display 0:
    0: 'PointerEventDispatcher0 (server)', 
  RecentQueue: length=10
    KeyEvent, age=193469ms
    KeyEvent, age=193289ms
    FocusEvent(hasFocus=false), age=193120ms
    FocusEvent(hasFocus=true), age=192905ms
    FocusEvent(hasFocus=false), age=192736ms
    FocusEvent(hasFocus=true), age=192087ms
    KeyEvent, age=187970ms
    KeyEvent, age=187789ms
    FocusEvent(hasFocus=false), age=187646ms
    FocusEvent(hasFocus=true), age=187467ms
  PendingEvent: <none>
  InboundQueue: <empty>
  ReplacedKeys: <empty>
  Connections:
    524: channelName='af5a378 com.silicondust.view/com.silicondust.view.App (server)', windowName='af5a378 com.silicondust.view/com.silicondust.view.App (server)', status=NORMAL, monitor=false, responsive=true
      OutboundQueue: <empty>
      WaitQueue: <empty>
    428: channelName='d70b346 InputMethod (server)', windowName='d70b346 InputMethod (server)', status=NORMAL, monitor=false, responsive=true
      OutboundQueue: <empty>
      WaitQueue: <empty>
    343: channelName='9463226 com.amazon.tv.launcher/com.amazon.tv.launcher.ui.HomeActivity_vNext (server)', windowName='9463226 com.amazon.tv.launcher/com.amazon.tv.launcher.ui.HomeActivity_vNext (server)', status=NORMAL, monitor=false, responsive=true
      OutboundQueue: <empty>
      WaitQueue: <empty>
    268: channelName='4b83e6d com.amazon.vizzini (server)', windowName='4b83e6d com.amazon.vizzini (server)', status=NORMAL, monitor=false, responsive=true
      OutboundQueue: <empty>
      WaitQueue: <empty>
    510: channelName='af2c4d8 com.amazon.vizzini (server)', windowName='af2c4d8 com.amazon.vizzini (server)', status=NORMAL, monitor=false, responsive=true
      OutboundQueue: <empty>
      WaitQueue: <empty>
    137: channelName='PointerEventDispatcher0 (server)', windowName='PointerEventDispatcher0 (server)', status=NORMAL, monitor=true, responsive=true
      OutboundQueue: <empty>
      WaitQueue: <empty>
  AppSwitch: not pending
  Configuration:
    KeyRepeatDelay: 50ms
    KeyRepeatTimeout: 400ms
hdmi_input: null
device_class: tv
entity_picture: /api/media_player_proxy/media_player.guest_room_fire_tv?token=57e9e6b5bc52c9f4d96b20f95afbcd9b19467a9636dea16a2495083b18928ef5&cache=ce9969089a4a5960
friendly_name: Guest Room Fire TV
supported_features: 22961

Happy to provide more info if required!

PRProd commented 1 year ago

Oops! Sorry about that!

Firemote version v3.0.4 was just published, and it includes untested beta support for the Fire TV Stick 4K 2nd Gen 2023.

Please download and install the new version, try it out, and let me know if everything works as expected.

Thanks!

PRProd commented 1 year ago

@jezzamine - It's been a few days, and I haven't heard any complaints... and it looks like at least one person gave my previous comment a thumbs-up, so I'm going to assume that this is working and close the issue for now.

If you disagree, please reply to this thread and let me know.

jezzamine commented 1 year ago

Thanks for working on this!

Using v3.0.6 I haven't been able to get any of the buttons to work. The physical remote is operating fine and I've tried changing compatibility_mode from default to event0 through to event9 with no success.

There is nothing in my logs but in Developer tools it either says: _adbresponse: sendevent: /dev/input/event5: No such file or directory or _adbresponse: sendevent: /dev/input/event5: Permission denied

I have tried on another Fire TV Stick 4K (2nd Gen) connected to a different TV but the results are the same.

I use YAML mode and this is what I have:

  - type: custom:firemote-card
    entity: media_player.guest_room_fire_tv
    device_family: amazon-fire
    device_type: fire_tv_stick_4k_second_gen
    compatibility_mode: default
    app_launch_1: plex
    app_launch_2: hdhomerun
    app_launch_3: prime-video
    app_launch_4: youtube
    visible_name_text: Guest Room
    name_position: bottom
    visible_name_text_color: '#d9d9d9'
  #  hdmi_1: Cable
    scale: 85
PRProd commented 1 year ago

@jezzamine - well... bummer. :cry:

I might have to buy one to do the testing myself. I did notice that @nathan-curtis gave a :+1: in this thread to the v3.0.4 release announcement. I wonder if it's working for him and maybe there is something unique about your environment. :thinking:

nathan-curtis commented 1 year ago

Some buttons are working but power, volume, left right up down, home and select don't.

Mine is the brand new max stick.

Ill pull the details and send them in but I'm dealing with some things at home and it will be at least a day before I can pull the logs from ADB.

PRProd commented 1 year ago

Thanks @nathan-curtis! I'm going to order one for myself now.

PRProd commented 1 year ago

Done. I ordered the Fire TV Stick 4K Max and the Fire TV Stick 4K and it looks like they will arrive tomorrow.

Sorry. I should have done this from the beginning. I was hoping that I could save myself the $97.29 expense, but... oh well!

PRProd commented 1 year ago

Well... this isn't good. It looks like Amazon has tightened down the permissions for these new Fire Stick models. This could mean that when I get the Firemote controls working for both of these sticks, there will be a long lag time between button presses. :cry:

I'll keep working on it.

In the meantime, I'm hoping that someone brilliant will stumble across my reddit post and have a solution

PRProd commented 1 year ago

I've updated the Firemote Wiki entries for the Fire TV Stick 4K 2nd Gen (2023) and the Fire TV Stick 4K Max 2nd Gen (2023) to include the unfortunate information we have learned here, we well as providing an extensive chart of the ADB commands that these two devices will be using in the next release.

There's more bad news here too: It doesn't appear that Home Assistant can see what application is currently active in either of these device models. This will mean that an App Shortcut button's "lit" or "dim" state will not be possible here either. (The same situation is true for Apple TV devices)

I thought that new devices were supposed to be better :man_shrugging:

I'm currently working on #152 and will release these changes along with that one.

PRProd commented 1 year ago

I have just published Firemote beta release version v3.1.0.b1 which contains working code for these two devices. I'd love for you to download it and take it for a spin.

Other than the slow reaction time for most navigation buttons, I'd like to hear from you about any issues you find, or if you agree that I've solved all of the outstanding issues. My plan is to push these changes into the official release soon, so your quick feedback is appreciated.

Thanks.