[PLUGIN] IPMI for 6.11+


Recommended Posts

26 minutes ago, mikeyosm said:

@SimonF I am getting connection failed with my Asrock Rack x570D5U mobo. I am running UNRAID inside a VM and wanting to display my Asrock IPMI stats in the dashboard. What am I doing wrong?

 

image.thumb.png.dee410abbc2cf8285b49bbc566dac7aa.png

Try this command, you will need to use your IP etc

 

/usr/sbin/ipmi-sensors --output-sensor-thresholds --comma-separated-output --output-sensor-state --no-header-output --interpret-oem-data --always-prefix -h '192.168.x.x' -u 'ADMIN' -p 'PASSWORD' --session-timeout=5000 --retransmission-timeout=1000

Link to comment
11 hours ago, SimonF said:

Try this command, you will need to use your IP etc

 

/usr/sbin/ipmi-sensors --output-sensor-thresholds --comma-separated-output --output-sensor-state --no-header-output --interpret-oem-data --always-prefix -h '192.168.x.x' -u 'ADMIN' -p 'PASSWORD' --session-timeout=5000 --retransmission-timeout=1000

Sure.

 

I get -

 

ipmi-sensors: authentication type unavailable for attempted privilege level

Link to comment

With debug enabled --

 

192.168.x: =====================================================
192.168.x: IPMI 1.5 Get Channel Authentication Capabilities Request
192.168.x: =====================================================
192.168.x: RMCP Header:
192.168.x: ------------
192.168.x: [               6h] = version[ 8b]
192.168.x: [               0h] = reserved[ 8b]
192.168.x: [              FFh] = sequence_number[ 8b]
192.168.x: [               7h] = message_class.class[ 5b]
192.168.x: [               0h] = message_class.reserved[ 2b]
192.168.x: [               0h] = message_class.ack[ 1b]
192.168.x: IPMI Session Header:
192.168.x: --------------------
192.168.x: [               0h] = authentication_type[ 8b]
192.168.x: [               0h] = session_sequence_number[32b]
192.168.x: [               0h] = session_id[32b]
192.168.x: [               9h] = ipmi_msg_len[ 8b]
192.168.x: IPMI Message Header:
192.168.x: --------------------
192.168.x: [              20h] = rs_addr[ 8b]
192.168.x: [               0h] = rs_lun[ 2b]
192.168.x: [               6h] = net_fn[ 6b]
192.168.x: [              C8h] = checksum1[ 8b]
192.168.x: [              81h] = rq_addr[ 8b]
192.168.x: [               0h] = rq_lun[ 2b]
192.168.x: [              23h] = rq_seq[ 6b]
192.168.x: IPMI Command Data:
192.168.x: ------------------
192.168.x: [              38h] = cmd[ 8b]
192.168.x: [               Eh] = channel_number[ 4b]
192.168.x: [               0h] = reserved1[ 3b]
192.168.x: [               0h] = get_ipmi_v2.0_extended_data[ 1b]
192.168.x: [               3h] = maximum_privilege_level[ 4b]
192.168.x: [               0h] = reserved2[ 4b]
192.168.x: IPMI Trailer:
192.168.x: --------------
192.168.x: [              AAh] = checksum2[ 8b]
192.168.x: =====================================================
192.168.x: IPMI 1.5 Get Channel Authentication Capabilities Response
192.168.x: =====================================================
192.168.x: RMCP Header:
192.168.x: ------------
192.168.x: [               6h] = version[ 8b]
192.168.x: [               0h] = reserved[ 8b]
192.168.x: [              FFh] = sequence_number[ 8b]
192.168.x: [               7h] = message_class.class[ 5b]
192.168.x: [               0h] = message_class.reserved[ 2b]
192.168.x: [               0h] = message_class.ack[ 1b]
192.168.x: IPMI Session Header:
192.168.x: --------------------
192.168.x: [               0h] = authentication_type[ 8b]
192.168.x: [               0h] = session_sequence_number[32b]
192.168.x: [               0h] = session_id[32b]
192.168.x: [              10h] = ipmi_msg_len[ 8b]
192.168.x: IPMI Message Header:
192.168.x: --------------------
192.168.x: [              81h] = rq_addr[ 8b]
192.168.x: [               0h] = rq_lun[ 2b]
192.168.x: [               7h] = net_fn[ 6b]
192.168.x: [              63h] = checksum1[ 8b]
192.168.x: [              20h] = rs_addr[ 8b]
192.168.x: [               0h] = rs_lun[ 2b]
192.168.x: [              23h] = rq_seq[ 6b]
192.168.x: IPMI Command Data:
192.168.x: ------------------
192.168.x: [              38h] = cmd[ 8b]
192.168.x: [               0h] = comp_code[ 8b]
192.168.x: [               1h] = channel_number[ 8b]
192.168.x: [               0h] = authentication_type.none[ 1b]
192.168.x: [               0h] = authentication_type.md2[ 1b]
192.168.x: [               0h] = authentication_type.md5[ 1b]
192.168.x: [               0h] = authentication_type.reserved1[ 1b]
192.168.x: [               0h] = authentication_type.straight_password_key[ 1b]
192.168.x: [               0h] = authentication_type.oem_prop[ 1b]
192.168.x: [               0h] = authentication_type.reserved2[ 1b]
192.168.x: [               0h] = authentication_type.ipmi_v2.0_extended_capabilities_available[ 1b]
192.168.x: [               0h] = authentication_status.anonymous_login[ 1b]
192.168.x: [               0h] = authentication_status.null_username[ 1b]
192.168.x: [               1h] = authentication_status.non_null_username[ 1b]
192.168.x: [               0h] = authentication_status.user_level_authentication[ 1b]
192.168.x: [               1h] = authentication_status.per_message_authentication[ 1b]
192.168.x: [               0h] = authentication_status.k_g[ 1b]
192.168.x: [               0h] = authentication_status.reserved[ 2b]
192.168.x: [               0h] = channel_supports_ipmi_v1.5_connections[ 1b]
192.168.x: [               0h] = channel_supports_ipmi_v2.0_connections[ 1b]
192.168.x: [               0h] = reserved[ 6b]
192.168.x: [            C1D6h] = oem_id[24b]
192.168.x: [               0h] = oem_auxiliary_data[ 8b]
192.168.x: IPMI Trailer:
192.168.x: --------------
192.168.x: [              70h] = checksum2[ 8b]
192.168.x: ipmi-sensors: authentication type unavailable for attempted privilege level
 

Link to comment
On 9/18/2023 at 4:41 PM, SimonF said:

It should be possible to add other boards, I will be looking at dell servers at some point. Do you know the ipmi commands to change speeds?

 

 

I have a very basic script running to check temps and change fan speeds for my Dell R720XD. I would be willing to supply commands and possibly help get the fan control running on Dell's. 

Let know if you would like that info.

Link to comment
49 minutes ago, Weoxstan said:

I have a very basic script running to check temps and change fan speeds for my Dell R720XD. I would be willing to supply commands and possibly help get the fan control running on Dell's. 

Let know if you would like that info.

If you could that would be helpful. Currently this is my info for the iDRAC controls I have been testing on a 720. But not part of the plugin as yet.

 

Low
ipmitool -I lanplus -H ipaddress of idrac -U username -P password raw 0x30 0xCE 0x00 0x09 0x07 0x00 0x00 0x00 0x07 0x00 0x02 0x02 0x02 0x00 0x00 
high
ipmitool -I lanplus -H ipaddress of idrac -U username -P password raw 0x30 0xCE 0x00 0x09 0x07 0x00 0x00 0x00 0x07 0x00 0x02 0x02 0x02 0x01 0x00

https://www.virtualbytes.io/dell-poweredge-ipmi-fan-control/

### Dell Fan Control Commands
#
#
# Hex to Decimal: http://www.hexadecimaldictionary.com/hexadecimal/0x1a/
#
#
# print temps and fans rpms
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> sensor reading "Ambient Temp" "FAN 1 RPM" "FAN 2 RPM" "FAN 3 RPM"
#
# print fan info
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> sdr get "FAN 1 RPM" "FAN 2 RPM" "FAN 3 RPM"
#
# enable manual/static fan control
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> raw 0x30 0x30 0x01 0x00
#
# disable manual/static fan control
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> raw 0x30 0x30 0x01 0x01
#
# set fan speed to 0 rpm
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> raw 0x30 0x30 0x02 0xff 0x00
#
# set fan speed to 20 %
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> raw 0x30 0x30 0x02 0xff 0x14
#
# set fan speed to 30 %
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> raw 0x30 0x30 0x02 0xff 0x1e
#
# set fan speed to 100 %
ipmitool -I lanplus -H <iDRAC-IP> -U <iDRAC-USER> -P <iDRAC-PASSWORD> raw 0x30 0x30 0x02 0xff 0x64

 

Link to comment
2 hours ago, mikeyosm said:

@SimonF any ideas on what could be wrong?

I think this is going to be related to you specific hardware. I believe some newer Dell servers dont allow access of the IPMI via IDRAC.

 

There may be an option in settings or ask the vendor if it is possible.

 

Can you get info from the host OS?

Link to comment
57 minutes ago, SimonF said:

I think this is going to be related to you specific hardware. I believe some newer Dell servers dont allow access of the IPMI via IDRAC.

 

There may be an option in settings or ask the vendor if it is possible.

 

Can you get info from the host OS?

Yep host OS works perfect, just network doesnt work. Asrock  asked me to try ipmitool instead.

 

root@TEST:~# ipmitool -H 192.168.1.x -U admin -P test -A PASSWORD
Authentication type PASSWORD not supported
Error: Unable to establish LAN session
Error: Unable to establish IPMI v1.5 / RMCP session
 

Tried all of the password types, same error every time.

Edited by mikeyosm
Link to comment

@SimonF success with ipmitool - had to use the following command line...

 

How do I get this working in the plugin?

 

root@TEST:~# ipmitool -I lanplus -H 192.168.1.x -U admin -P test sel list
   1 | 08/06/2023 | 13:51:01 | Event Logging Disabled #0xcf | Log area reset/cleared | Asserted
   2 |  Pre-Init  |0000003872| Voltage #0x0b | Lower Critical going low  | Asserted
   3 |  Pre-Init  |0000003877| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   4 |  Pre-Init  |0000003878| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted
   5 |  Pre-Init  |0000003880| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   6 |  Pre-Init  |0000003881| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted
   7 |  Pre-Init  |0000003884| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   8 |  Pre-Init  |0000003885| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted
   9 |  Pre-Init  |0000003886| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   a |  Pre-Init  |0000003888| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted

Link to comment
20 minutes ago, mikeyosm said:

@SimonF success with ipmitool - had to use the following command line...

 

How do I get this working in the plugin?

 

root@TEST:~# ipmitool -I lanplus -H 192.168.1.x -U admin -P test sel list
   1 | 08/06/2023 | 13:51:01 | Event Logging Disabled #0xcf | Log area reset/cleared | Asserted
   2 |  Pre-Init  |0000003872| Voltage #0x0b | Lower Critical going low  | Asserted
   3 |  Pre-Init  |0000003877| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   4 |  Pre-Init  |0000003878| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted
   5 |  Pre-Init  |0000003880| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   6 |  Pre-Init  |0000003881| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted
   7 |  Pre-Init  |0000003884| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   8 |  Pre-Init  |0000003885| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted
   9 |  Pre-Init  |0000003886| Voltage #0x0b | Lower Non-recoverable going low  | Asserted
   a |  Pre-Init  |0000003888| Voltage #0x0b | Lower Non-recoverable going low  | Deasserted

ipmi-sensors -h myip -u myuser -p mypass -l operator -vv -D LAN_2_0

 

_D LAN_2_0 is the same as lanplus I think. Will look to see if that can be specified in the plugin.

Link to comment
7 minutes ago, SimonF said:

ipmi-sensors -h myip -u myuser -p mypass -l operator -vv -D LAN_2_0

 

_D LAN_2_0 is the same as lanplus I think. Will look to see if that can be specified in the plugin.

Yes, that works! Please implement so all of us Asrock owners who could never get this working over LAN, now can.

 

Link to comment
3 hours ago, mikeyosm said:

Yes, that works! Please implement so all of us Asrock owners who could never get this working over LAN, now can.

 

I have made some changes to these two files  

 

Place the settings in the main path /usr/local/emhttp/plugins/ipmi and the options in the include subdirectory.

 

You will see a new option in the settings called Lan Version. Default is 1.5, 2.0 is the version you need for your mother board.

 

I still need to test on other platforms before I release.

 

image.png

 

IPMISettings.page ipmi_options.php

Link to comment

Dell R720XD

I found this bash script a couple years ago (don't know the author), it has some errors in it and was not working for me. I have fixed those errors and this is what I have.  The IPMIHOST, IPMIUSER, and IPMIPW have been changed to protect the innocent...

The script checks the inlet vs exhaust temps and adjusts the fans up or down depending on the temp difference. It also sets a base speed depending on the ambient room, inlet, temp.

 

#!/bin/bash
# Login Creds
IPMIHOST=10.10.10.110
IPMIUSER=user
IPMIPW=SUPERsecret

# Fan Settings
# Change to fit your needs
FANSPEED=60
LOWESTSPEED=5
MAXSPEED=90

# Temperatures
inlet=0
exhaust=0
tempdiff=0

# The maximum difference between inlet and exhaust temp before fans ramp up (In Celsius)
maxtempdiff=10

# Enable Manual Fan Speed
ipmitool -I lanplus -H $IPMIHOST -U $IPMIUSER -P $IPMIPW raw 0x30 0x30 0x01 0x00

# This variable sends an IPMI command to get the temperature, and outputs it as two digits.
# Do not edit unless you know what you're doing.
inlet=$(ipmitool -I lanplus -H $IPMIHOST -U $IPMIUSER -P $IPMIPW sdr type temperature | grep 'Inlet Temp' | grep degrees | grep -Po '\d{2}' | tail -1)
exhaust=$(ipmitool -I lanplus -H $IPMIHOST -U $IPMIUSER -P $IPMIPW sdr type temperature | grep 'Exhaust Temp' | grep degrees | grep -Po '\d{2}' | tail -1)
tempdiff=$(($exhaust - $inlet))

echo ---------------
echo Real Readings
echo ---------------
echo Real inlet temp: $inlet
echo Real exhaust temp: $exhaust
echo Temperature difference: $tempdiff

if [[ $inlet -le 20 ]]; then
    FANSPEED=$LOWESTSPEED
elif [[ $inlet -le 25 ]]; then
    FANSPEED=$(($LOWESTSPEED + 3))
elif [[ $inlet -le 30 ]]; then
    FANSPEED=$(($LOWESTSPEED + 7))
elif [[ $inlet -le 40 ]]; then
    FANSPEED=$(($LOWESTSPEED + 15))
elif [[ $inlet -le 50 ]]; then
    FANSPEED=$(($LOWESTSPEED + 35))
fi
echo "Base fanspeed by temp is: $FANSPEED"

inletaddspeed=0
echo Difference between inlet and exhaust: $tempdiff
echo Max allowed difference: $maxtempdiff
inletdiff=$(($tempdiff - $maxtempdiff))
if [[ $inletdiff -ge 0 ]]; then
    inletaddspeed=$inletdiff
fi

echo Add to fanspeed: $inletaddspeed
echo InletaddSpeed: $inletaddspeed

# Set Overrides
override=0
if [[ $exhaust -ge 70 ]]; then
    FANSPEED=50
    override=1
elif [[ $exhaust -ge 72 ]]; then
    FANSPEED=60
    override=1
elif [[ $exhaust -ge 80 ]]; then
    FANSPEED=90
    override=1
fi

if [[ $override -eq 1 ]]; then
    echo ----------------------
    echo OVERRIDE HIGH TEMP
    echo ----------------------
    echo Exhaust high temp: $exhaust
    echo setting fanspeed to $FANSPEED
fi

echo ----------------
echo Setting Fanspeed
echo ----------------

echo Inlet Temp base fanspeed: $FANSPEED
echo Inlet/Exhaust diff fanspeed: $inletaddspeed
if [[ $inletaddspeed -le 0 ]]; then
    inletaddspeed=0
    FANSPEED=$(($FANSPEED + $inletaddspeed))
    if [[ $FANSPEED -ge $MAXSPEED ]]; then
        FANSPEED=$MAXSPEED
    elif [[ $FANSPEED -le $LOWESTSPEED ]]; then
        FANSPEED=$LOWESTSPEED
    fi
fi
 

Edited by Weoxstan
  • Like 1
Link to comment

Seems I've gotten this to work on my AsrockRack ROMED8-2T.

The ROMED8 seems to use the same raw commands as used in the x570 fix here: https://github.com/lucasteligioridis/IPMI-unRAID/tree/master/source/ipmi/usr/local/emhttp/plugins/ipmi/scripts

 

This fix however did not work and seemed to crash ipmifan and other stuff, but with the raw commands known and a compare i was able to screw up the plugin... which a friend with a pretty huge dolphin then spend 6 hours basically teaching me how coding works.

 

Important note:

1: I have no idea what I'm doing here!

 

2: These config files include hardcoded changes to the raw command used throughout, so this will not work on other boards than those who need those.

 - I do not have access to any other Asrock boards and therefore cannot verify on other hardware, but since the core changes came from an x570 fix, there is a chance this might work for more recent boards.

 

 

Setup:

AsrockRack ROMED8-2T

Bios: P3.70 (Latest at this time)

BMC: 2.02.00 (Latest at this time)

Unraid: 6.12.2

 

 

IPMI interface Settings needed: Settings -> FAN settings -> FAN Mode -> Set FAN control mode to "Manual" for all fans. (Adjust above under "Set fan duty for manual mode if you need to manage your fans until the script takes over)

 

0: Disable fan control if running in gui

 

1: Make a backup of your old ipmifan and ipmi2json located here: /usr/local/emhttp/plugins/ipmi/scripts/

Note: I highly suggest to compare my files with original before using them, Notepad++ has a nice compare plugin that will allow you to see the differences, the changes are small so even a person with no coding knowledge can verify nothing evil is present (Aka, don't just install random scripts from guys on the internet ;) )

 

2: Copy over the new ipmifan and ipmi2json to /usr/local/emhttp/plugins/ipmi/scripts/

 

3: Run configure via GUI, this will generate a board.json in /boot/config/plugins/ipmi/

At this time you could test fan control. You should be able to adjust fans, but the fans are most likely not aligned (eg fan2 settings are pushed to fan1 and fan1 can't be controlled).

 

3: Modify your board.json, for me there was a FAN_Pos* line as the first fan, pushing everything by one. Moving this line below FAN7 solved the mapping.

Attached is my board.json which you can also just copy into /boot/config/plugins/ipmi (overwrite), notice this will set all 7 fans as "configured" in the GUI.

 

4: Configure your fans via gui so we know the script will kick in. My HDD's where up at 30c so time to get the fans working.

Set all fans to HDD temp. Set minimum temp to 20, max to 25, set max speed to the following (fan1, fan2...) (replace sensor with anything hotter than 25)

37,5

48,4

53,1

64

70,3

79,6

87,5

 

Apply but do not enable fan control.

 

5:

via terminal in /usr/local/emhttp/plugins/ipmi/scripts/  run the following

ipmifan --quit

ipmifan --quit

(I do it twice as the output changes if it was running)

ipmifan --debug

 

Your fans should spin up now and your terminal will fill with info. ctrl-c to stop it (otherwise it will refresh every few seconds).

Scroll up, you are looking for this part:

    [cmd_str] => ipmi-raw 00 3a d6 24 31 34 41 45 51 56 14 14 14 14 14 14 14 14 15  2>&1
    [fanopts] =>
    [current_hex] =>  d6 24 31 34 41 45 51 56 14 14 14 14 14 14 14 14

(Note how the currect hex is short a number, this caused ipmifan to crash, not sure why its missing so I hard coded the 15 value in to make it work)

 

Now go to your IPMI fan control and refresh, you should see the approx. % number you assigned.

 

6

run ipmifan --quit again, c

in IPMI interface, set all fans to 20%

In unraid, configure your fans as you want them, apply and enable fan control.

refresh IPMI interface and you should now see the values have been adjusted away from 20% (Pending your config, of course).

 

 

Things that are not yet tested:

If anything is overwritten during a reboot.

Edit: Appears to get overwritten doing boot by the plugin, needs to be setup to overwrite these doing boot

 

Troubleshooting:

in step #5 running ipmifan didn't work.

*If you get the output including the ipmi-raw command, then maybe this fix isn't for your board, google and see if 00 3a d6 is the correct raw for your board, you can run the command manually with 64 as the number for all fans (Replace 24 34 34... with 64 all the way) this sets fans to 100%

*if the script only told you the hottest HDD and then crashed, the command must have failed and quite certainly this is not for your board

*It works but the fans are in wrong order - google a hex -> decimal converter and then convert the numbers in the raw command into % numbers, check that up against what happends in your IPMI interface, adjust your board.json until it fits.

 

 

 

 

Question:

Does anyone know of a way to bypass Asrock's 20% minimum fan RPM? - Would like to be able to go to 0% on some fans depending on temp.

Edit: Asrock support confirmed: It cannot be set below 20%, no way of doing it and no plans on changing this in the future

 

board.json ipmi2json ipmifan

Edited by hoejholm
Answered the questions
Link to comment

Heya, 

 

For some reason, my config is greyed out, and I'm unable to edit. Attempted a reinstallation, but no go.

 

image.thumb.png.8206bd72a0bfb82c24fb886976f8f3a7.png

 

The tool works with LAN2.0, but unsure how to change this in the text config.

 

Look like @garrett hamonic is having the same issue above (https://forums.unraid.net/topic/135823-plugin-ipmi-for-611/?do=findComment&comment=1315499)

 

Unsure how best to resolve.

Edited by modem7
Link to comment
39 minutes ago, modem7 said:

Heya, 

 

For some reason, my config is greyed out, and I'm unable to edit. Attempted a reinstallation, but no go.

 

image.thumb.png.8206bd72a0bfb82c24fb886976f8f3a7.png

 

The tool works with LAN2.0, but unsure how to change this in the text config.

 

Look like @garrett hamonic is having the same issue above (https://forums.unraid.net/topic/135823-plugin-ipmi-for-611/?do=findComment&comment=1315499)

 

Unsure how best to resolve.

Is this running? if yes set to No you cannot change settings if running.

image.png

  • Upvote 1
Link to comment

Hello there,

I would like ask You if this docker plugin will work with my Dell PowerEdge T30 Unraid server?
Here is my diagnostic file; 

(im a newbie to this system, so sorry for such questions)

thank You

unraidserver-diagnostics-20231030-1031.zip






EDIT: I've installed IPMITOOL from NERDPACK and its up to date.

Now I have this problem:

"Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory"

 

 

So after that I foound this page; https://serverfault.com/questions/480371/ipmitool-cant-find-dev-ipmi0-or-dev-ipmidev-0

but it does not help. After pasting "modprobe ipmi_si" command I recieve "modprobe: ERROR: could not insert 'ipmi_si': No such device"

and now I have no idea what to try next.

 

Thank You.

 

Edited by rogales
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.